重定向到stdin以便在vxworks 6.7中执行脚本

时间:2014-08-27 14:04:20

标签: vxworks

我需要在vxWorks 6.7中执行脚本。可以使用vxworks 5.5中的execute()函数完成此操作。我正在应用的解决方案是使用stdin重定向,如下面的代码所示:

    newStdIn = open("myScript.txt",O_RDONLY,0644);
    oldStdIn=ioGlobalStdGet(STD_IN);
    ioGlobalStdSet(STD_IN, newStdIn);
    /*Read file here and execute*/
    ioGlobalStdSet(STD_IN,oldStdIn); /*Restore old stdIn*/
    close(newStdIn);

我缺少读取和执行部分(注释所在的位置)。

修改 根据vxworks内核程序员指南,执行脚本的方法如下:

    fdScript = open ("myScript", O_RDONLY);
    shellGenericInit ("INTERPRETER=Cmd", 0, NULL, &shellTaskName, FALSE, FALSE, fdScript, STD_OUT, STD_ERR);
    do
       taskDelay (sysClkRateGet ());
    while (taskNameToId (shellTaskName) != ERROR);
    close (fdScript);

但它会在不处理脚本的情况下打开一个新的shell。 这个问题是我的应用程序在调用shellGenericInit之后不会做任何事情。

1 个答案:

答案 0 :(得分:0)

看起来你正在启动一个Cmd shell,而不是一个C解释器shell。 既然你提到你在5.5中使用了execute()函数,我假设你的脚本是用于C解释器的。

尝试将“INTERPRETER = Cmd”更改为“INTERPRETER = C”。