我正在尝试将所有串行数据重定向到VxWorks中的进程 . 使用以下代码
fd = open("/tyCo/0", O_RDWR,0);
ioctl(fd, FIOSETOPTIONS, OPT_TERMINAL & ~OPT_7_BIT);
read(fd, line, 100);
给出正确的输入,除了输入的第一个字符未填充,但打印到终端 . 因此,如果我输入“Hello”,则打印出“H”并且line =“ello” . 如果我没有输入任何内容并点击返回键,我会收到VxWorks Shell的提示 .
我认为VxWorks Shell正在拦截数据的第一个字母 . 我的猜测是我必须将STDIO重定向到新进程,但我发现的所有_1789429都说使用了VxWorks 6.4 RTP中不可用的ioGlobalStdSet() . 如何重定向STDIO或从我的进程中杀死VxWorks Shell?
3 回答
在VxWorks配置和编译期间禁用shell会永久删除该问题 . 也可以在shell处输入exit以暂时禁用它 .
一种解决方法是使用ioGlobalStdSet将IO重定向到管道 . 然后,在RTP中,以读取模式打开管道 .
脱离我的头脑 - 在内核中:
在RTP中:
rtpFd = open(“/ pipe / input”,O_RD,0);读(rtpFd,line,100);
如果你想将所有任务的输出重定向到当前的登录shell,我认为答案是: