当前位置: 技术问答>linux和unix
多进程通讯的管道相关问题
来源: 互联网 发布时间:2016-04-23
本文导语: 管道是在进程内创建的,在fork一个子进程后管道作为一种资源应该是被复制了的(父子进程各一份),那为啥他们还能操作同一个管道,并进行通讯捏? (写着写着想到 难道是因为复制的仅仅是一个指针?) ...
管道是在进程内创建的,在fork一个子进程后管道作为一种资源应该是被复制了的(父子进程各一份),那为啥他们还能操作同一个管道,并进行通讯捏?
(写着写着想到 难道是因为复制的仅仅是一个指针?) 高手指点啊!!
(写着写着想到 难道是因为复制的仅仅是一个指针?) 高手指点啊!!
|
管道是一种内核资源,不仅子进程可以使用,其他进程也可以使用。
|
一个管道有两端,父子进程各用一端,
比如int pipefd[2];
父进程创建了一个管道,再fork了子进程,因为复制了父进程空间,继承了pipe[2]数据
父进程关闭pipefd[1],只用pipefd[0]来读写.子进程关闭pipefd[0],只用pipefd[1]来读写
这就象一个管子,父进程用管子的一端.子进程用管子的另一端
比如int pipefd[2];
父进程创建了一个管道,再fork了子进程,因为复制了父进程空间,继承了pipe[2]数据
父进程关闭pipefd[1],只用pipefd[0]来读写.子进程关闭pipefd[0],只用pipefd[1]来读写
这就象一个管子,父进程用管子的一端.子进程用管子的另一端