在stdin上使用grep

时间:2014-03-06 06:11:07

标签: c grep stdin file-descriptor

所以,我用过fork() 父进程打开文件并将其内容读入缓冲区并将缓冲区从写入端(fd [1])发送到读取端(fd [0])

子进程负责读取缓冲区。我想将fd [0]中的任何内容重定向到stdin,所以我可以在它上面使用Unix命令。举个例子:

// in child process
dup2(fd[0], 0); // 0 is STDIN 

// Don't know what to do here

execl("/bin/grep/", "grep", "hello", NULL); // find the string 'hello' and operate on the content coming from stdin

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

似乎很好。 也许你可以在dup2之后关闭一些fds:

// in child process
dup2(fd[0], STDIN_FILENO);
close(fd[0]);
close(fd[1]);

编辑:

似乎有拼写错误:"/bin/grep/"

应该是:"/bin/grep"