在下面的代码片段我正在重定向ls
命令的输入wc -l
。现在我也想重定向ls
命令来命名文件的输出,其作品完美的输出“beejoutput.txt”使用下面的代码,但它不工作。需要帮忙。写作文件描述符
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(void)
{
int pfds[2];
pipe(pfds);
if (!fork())
{
dup2(pfds[1],1);
close(pfds[0]);
execlp("ls", "ls",NULL);
}
else
{
FILE *outputO=fopen ("beejoutput.txt", "w"); //opening file for writing
dup2(pfds[0],0);
dup2(fileno(outputO),pfds[0]);
close(pfds[1]);
execlp("wc", "wc","-l", NULL);
}
return 0;
}
你为什么要关闭工艺流程图[1] execlp之前( “WC”)? – weekens 2011-05-11 10:29:30
由于该FD不应传递给wc命令。 – 2011-05-11 10:36:36
@weekens:因为我们不想写任何东西到pipe.pfds [1]将被用来发送数据到父进程的子进程。 – mukesh 2011-05-11 10:37:39