sentto2 发表于 2015-03-05 10:04

[结贴]fork()出来的子进程会继承父进程的fd,那么还要dup()做什么呢?

本帖最后由 sentto2 于 2015-03-06 15:56 编辑

感觉dup()函数有点多余啊。我的理解是不是有误?

zsszss0000 发表于 2015-03-05 11:10

不一样
比如A进程是父进程,B进程是子进程(通过fork产生)
则A中的文件描述符号会被B进程继承(复制父进程的文件描述符号表)

则A进程打开文件file.txt的描述符号如果为5,则B中打开这个文件描述符也为5

如果使用dup(),将会产生一个文件描述符,指向相同的一个文件
比如dup(5)可能会得到7,则5和7指向相同的file.txt

sentto2 发表于 2015-03-05 17:55

zsszss0000 发表于 2015-03-05 11:10 static/image/common/back.gif
不一样
比如A进程是父进程,B进程是子进程(通过fork产生)
则A中的文件描述符号会被B进程继承(复制父进 ...

所以我就想不明白dup由什么作用呢,在父子进程通信中不需要任何dup,两个进程就可以操作同一个fd啊

super皮波 发表于 2015-03-05 17:56

回复 4# sentto2

重定向         
   

super皮波 发表于 2015-03-05 17:57

回复 4# sentto2

你想想这个是怎么实现的 就懂dup的作用了
cat aaa.file>bbb.file
   

zsszss0000 发表于 2015-03-05 18:02

dup不是为了在父子进程之间通讯的。回复 4# sentto2


   

zsszss0000 发表于 2015-03-05 18:21

皮波,这个是怎么实现的?回复 6# super皮波


   

super皮波 发表于 2015-03-05 18:39

回复 8# zsszss0000

把bbbdup到标准输出,cat到标准输出的内容不就到了bbb中了嘛
页: [1]
查看完整版本: [结贴]fork()出来的子进程会继承父进程的fd,那么还要dup()做什么呢?