2015-04-01 128 views
0

我使用execlp()執行的子進程的命令,並保存到一個管道由家長本身例如打印管內容屏幕

int pipefd[2]; 
if (pipe(pipefd)) { 
    perror("pipe"); 
    exit(127); 
} 
if(!fork()){ 
    close(pipefd[0]); 
    dup2(pipefd[1], 1); 
    close(pipefd[1]); 
    execlp("ls", "ls", NULL); 
} else { 
    close(pipefd[1]); 
    dup2(pipefd[0], 0); 
    close(pipefd[0]); 
    execlp("wc", "wc", NULL); 
} 

讀取在某些情況下,家長不必執行任何操作,只是將管道內容打印在屏幕上,如何在屏幕上打印管道(可能由於未知輸出大小而不存儲到變量中)。

回答

1

我怎麼能打印管上[中] [該內容]屏幕

read()從字節管道字節和printf("%d\n", byte);,直到管道是空的,也就是說直到read()返回0

如果你能爲char連續使用printf("%c", byte);

的Asure它只是文本通過管道來不打印字節爲 int(每行一個如上圖所示),但