exit() 与 _exit()的区别: exit()在头文件stdlib.h 中, _exit()在unistd.h中, 均能正常终止进程,但_exit()终止后立即返给内核,而exit()先执行一些清除操作,然后将控制权交给内核.
若父进程先退出时,则系统回让init进程接管子进程..
当子进程先退出时,子进程进入僵死状态,,应使父进程调用 wait 或waitpid函数,则此时父进程会等待子进程结束
execv(const char *path, const char *envp[])
execv函数:函数通过路径名方式调用可执行文件作为新的进程映像,,参数path 是将要执行的程序的路径名envp参数是一个以NULL结尾的字符串数组.
execvp函数: 与上个函数用法相似, 不同的是参数filename, 该参数如果包含"/",就相当于路径名,若果不包含, 就在PATH环境变量定义的目录中寻找可执行文件.
exec函数可以执行二进制可执行文件, 也可执行Shell脚本程序, 在shell脚本执行时,第一行必须是: #!interpretername[arg]
编写守护进程要点:
~调用fork 产生一个子进程,退出父进程
~调用sesid创建新的对话期.
~禁止进程重新打开控制终端
~关闭不再需要的文件描述符
~将当前目录改为根目录
~将文件创建时使用的屏蔽字设为0
~处理SIGCHLD信号