当前位置:  技术问答>linux和unix

fork/exec的工作机制,我还是不太懂

    来源: 互联网  发布时间:2015-10-11

    本文导语:  书上说exec后原进程环境会被替代,是不是exec我在父进程里分配的东西,包括malloc的东西也不用手动释放了? 但是我看到advanced linux programming一书中,在fork后exec前,close掉所有的file descriptor,这是为什么呢? exec前我到底要...

书上说exec后原进程环境会被替代,是不是exec我在父进程里分配的东西,包括malloc的东西也不用手动释放了?

但是我看到advanced linux programming一书中,在fork后exec前,close掉所有的file descriptor,这是为什么呢?

exec前我到底要不要释放资源?

|
下面是“Unix环境高级编程”里面摘录的一段。更多的内容可能需要你自己去仔细研读了

用f o r k函数创建子进程后,子进程往往要调用一种e x e c函数以执行另一个程序。
当进程调用一种e x e c函数时,该进程完全由新程序代换,而新程序则从其m a i n函数开始执行。
因为调用e x e c并不创建新进程,所以前后的进程I D并未改变。e x e c只是用另一个新程序替换了
当前进程的正文、数据、堆和栈段。
前面曾提及在执行e x e c后,进程I D没有改变。除此之外,执行新程序的进程还保持了原进
程的下列特征:
? 进程I D和父进程I D。
? 实际用户I D和实际组I D。
? 添加组I D。
? 进程组I D。
? 对话期I D。
? 控制终端。
? 闹钟尚余留的时间。
? 当前工作目录。
? 根目录。
? 文件方式创建屏蔽字。
? 文件锁。
? 进程信号屏蔽。
? 未决信号。
? 资源限制。
? tms_utime, tms_stime, tms_cutime以及t m s _ u s t i m e值。
对打开文件的处理与每个描述符的e x e c关闭标志值有关。见图3 - 1以及3 . 1 3 节中对
F D _ C L O E X E C的说明,进程中每个打开描述符都有一个e x e c关闭标志。若此标志设置,则在
执行e x e c时关闭该描述符,否则该描述符仍打开。除非特地用f c n t l设置了该标志,否则系统的
默认操作是在e x e c后仍保持这种描述符打开。

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问,现在程序还有fork多个进程协同工作的吗?
  • 奇怪:程序一fork子进程时就停住了,似乎根本不能fork子进程啊?
  • unix中的fork2与fork有设么区别?
  • 程序在fork前申请了内存若干,在fork后子进程是否需要释放父进程之前申请的内存
  • fork()函数入门级问题:fork()与进程数
  • 一个fork的问题
  • 新手的问题关于fork?
  • 如何理解fork函数返回2次啊?
  • 急于明白Fork的用法.请提供中文解释.谢谢.
  • 关于fork的不解
  • 弱弱的问:fork和exec的区别是什么?
  • 关于fork的讨论
  • 关于fork的疑问?
  • fork之后的输出
  • fork() 父子进程执行顺序问题
  • 关于fork创建进程的一个问题
  • exit和fork是什么关系?他们是怎么配合使用的?
  • fork函数,在线等待,马上结贴。谢谢!!!!!!!!!!!!
  • fork的问题
  • 请教 linux的fork从什么版本开始支持COW?
  • c++ 和 fork


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3