小编Jac*_*cob的帖子

使用Fork和Dup的Unix管道

让我们说在我的程序中我想执行两个子进程,一个执行"ls -al"命令,然后将其传递到"wc"命令并在终端上显示输出.到目前为止,我如何使用管道文件描述符执行此操作我编写的代码:一个示例将非常有用

int main(int argc, char *argv[]) {
    int pipefd[2];
    int pipefd2[2];

    pipe(pipefd2);
    if ((fork()) == 0) {
       dup2(pipefd2[1],STDOUT_FILENO);
       close(pipefd2[0]);
       close(pipefd2[1]);
       execl("ls", "ls","-al", NULL);
       exit(EXIT_FAILURE);
    } 

    if ((fork()) == 0){
        dup2(pipefd2[0],STDIN_FILENO);
        close(pipefd2[0]);
        close(pipefd2[1]);
        execl("/usr/bin/wc","wc",NULL);
        exit(EXIT_FAILURE);
    }
    close(pipefd[0]);
    close(pipefd[1]);
    close(pipefd2[0]);
    close(pipefd2[1]);
}
Run Code Online (Sandbox Code Playgroud)

c unix pipe process

2
推荐指数
1
解决办法
1万
查看次数

标签 统计

c ×1

pipe ×1

process ×1

unix ×1