我正在尝试将 Vxworks 应用程序移植到 Linux。为了将其中一个串行设备的 i/o 重定向到标准 i/o,他们使用 ioTaskStdSet();在 vxworks 中。 但是我无法像 as 那样在 linux 中找到 api。只有复制设备在 linux 中可用,但在我的应用程序中也不起作用。
谁能帮我解决这个问题?
最佳答案
作为@Ignacio提到的 dup2 正是用于此目的。例如这个程序将 stdout 重定向到“echo”文件:
#include <fcntl.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
int main(int argc, char *argv[]) {
int fd = open("echo", O_RDWR | O_CREAT, 00644);
if(fd == -1)
return 1;
if(dup2(fd, 1) == -1)
return 1;
close(fd);
system("echo Hi!");
return 0;
}
关于c - 在 linux 中将串行设备的 i/o 重定向到标准 i/o 的 api 是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45728040/