我试图编写一个C语言程序,该程序将执行子进程(例如cat),并使用文件内容作为其 STDIN 。
我尝试使用 dup 2并收到错误消息:
“ / usr / bin / cat:-:输入/输出错误”
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
extern char **environ;
int main(int argc, char* argv[]){
int pid;
int child_input_fd = open("c_in", O_CREAT | O_WRONLY);
int child_output_fd = open("c_out", O_CREAT | O_WRONLY);
char* const child_args[]={"/usr/bin/cat", NULL};
pid=fork();
if(pid==0){
dup2(child_input_fd, 0);
dup2(child_output_fd, 1);
execve("/usr/bin/cat", child_args, environ);
}
return 0;
}
我的文件c_in包含文本
Test1
Test2
Test3
我希望c_out
在程序运行后包含相同的文本。