在下面的代碼片段我正在重定向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