exec函数

之前提及fork之后,子进程可以调用exec()执行另一个程序,调用exec函数后,该进程完全由新程序代换,新程序从main函数开始执行,调用exec并不创建新进程,所以进程ID不变。exec只是将新程序代替了当前进程的正文、数据、堆、栈。

fork是创建新进程,exec是执行新程序,exit处理终止,wait等待终止。这是基本的进程控制原语



exec之后,执行新程序的进程还保持原来的下列特征:

进程id和父进程id

实际用户id和实际组id(有效id则可变)

添加组id

进程组id

对话期id

控制终端

闹钟尚余留时间

当前工作目录

根目录

文件方式创建屏蔽字

文件锁

进程信号屏蔽

未决信号

资源限制

tms_utime,tms_stime,tms_cutime,tms_ustime值


对于打开的文件描述符与exec关闭标志值有关,FD_CLOEXEC,进程中每个打开的描述符都有一个exec关闭标志。

若此标志设置,则exec关闭描述符,否则不关闭。除非fcntl设置了该标志,否则系统默认exec不关闭文件描述符。




你可能感兴趣的:(exec函数)