2015-04-01 123 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(每行一个如上图所示),但