管道的一种常见用法:在父进程创建子进程后向子进程传递参数.例如,一个应用软件有一个主进程和很多个不同子进程. 主进程创建子进程后,在子进程调用exec函数执行一个新程序前,通过管道给即将执行的程序传递命令行参数,子进程根据传来 的参数进行初始化或其他操作. 大致思路: The child can then exec() another program, which inherits the standard streams. 父进程关闭 管道读端 close( fd[0] ); 调用 du…
前面的例子中,子进程可以直接共享父进程的文件描述符.但是如果子进程调用exec函数执行另一个应用程序时,就不能再共享了. 这种情况下可以将子进程中的文件描述符重定向到标准输入,当新执行的程序从标准输入获取数据时实际上是从父进程中获取输入数据. dup和dup2函数提供了复制文件描述符的功能. int dup(int oldfd); int dup2(int oldfd, int newfd); dup和dup2能够复制文件描述符.dup 和dup2都是返回新的描述符.或者返回-1并设置 errn…