fork、exec 系列与 system、popen 区别
http://www.chinaunix.net 作者:蓝色键盘 发表于:2003-05-06 19:52:17
两个问题,请大家一起讨论。
1、fork 和 exec 系列调用前后,进程在内存的“数据段”,“堆
栈段”和“代码段”有什么不同?除此以外,fork 和 exec 系列调
用还有什么区别?
2、system 和 popen 有什么区别?都常用在什么场合?
【发表回复】【查看论坛原帖】【添加到收藏夹】【关闭】
无双 回复于:2003-05-06 20:00:26
文件描述字在 fork 和 exec 中都是保持打开的
我学理这个比较重要
无双 回复于:2003-05-06 20:01:01
有点跑题了
但是还是请大家思考一下其它比较重要的地方
uiibono 回复于:2003-05-06 22:42:38
对于 fork():
1、子进程复制父进程的所有进程内存到其内存地址空间中。父、子
进程的
“数据段”,“堆栈段”和“代码段”完全相同,即子进程中的每
一个字节都
和父进程一样。
2、子进程的当前工作目录、umask 掩码值和父进程相同,fork()
之前父进程
打开的文件描述符,在子进程中同样打开,并且都指向相同的文
件表项。
3、子进程拥有自己的进程 ID。
对于 exec():
1、进程调用 exec()后,将在同一块进程内存里用一个新程序来代
替调用