一个Unix关于进程同步的问题

比如close(0)后又dup(to_chil),是先把文件描述符0关闭了,又复制了一个to_chil,新的to_chil的副本使用最低可用的文件描述符,也就还是0。所以close(to_chil)后并没有关闭它的副本,0。
■网友
父进程先关闭了1,然后dup(fd)是将fd重定向到目前最小的文件描述符,也就是1.先占坑,吃完饭再来填
【一个Unix关于进程同步的问题】 wow我回来啦
这个主要是对dup的理解,如图:
一个Unix关于进程同步的问题

父进程用dup分别将文件描述符1,0重定向到管道to_chil的写端和 to_par的读端,这样0, 1就不再是标准输入,标准输出了。同理,在子进程相反的操作。这样,就实现了父进程用文件描述符1向管道to_chil写,而子进程用文件描述符0从管道to_chil读,另一个同理。但是,在一个管道中没有用到的一端要先关闭,才可以向管道读写数据,否则会出错,具体原因我也不清楚。。。就这样,希望能帮到你,哈哈


    推荐阅读