在C中将文件内容定向到子进程的STDIN

时间:2019-05-25 05:51:27

标签: pipe fork exec io-redirection dup2

我试图编写一个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在程序运行后包含相同的文本。

0 个答案:

没有答案