将管道内容打印到屏幕

时间:2015-04-01 19:20:01

标签: c pipe execl

我使用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 个答案:

答案 0 :(得分:1)

  

如何在[the]屏幕上打印[管道内容]

来自管道的

read()printf("%d\n", byte);,直到管道为空,直到read()返回0

如果您可以确定它只是通过管道传输的文本,请不要将字节打印为int(每行一个,如上所示),而是使用charprintf("%c", byte);打印成一行