(1)exit()与_exit()区别: _exit()直接使进程停止运行,清除器使用的内存空间,销毁其在内核中的各种数据结构。
exit()函数在调用exit系统调用之前要检查文件的打开情况,把文件缓冲区中的内容写回文件,清理I/O缓冲(推荐使用这个函数)
(2)waitpid
#include <sys/types.h>
#include <sys/wait.h>
pid_t waitpid( pid_t pid, int *status, int options );
其中:pid取值不同,意义不同:
pid > 0时, 只等待进程ID=pid的子进程,不管其他已经有多少子进程运行结束推出了,只要指定的子进程还没有结束,waitpid就会一直等下去;
pid = -1时, 等待任何一个子进程退出,没有任何限制,此时waitpid 和wait的作用一摸一样;
pid = 0 时, 等待同一进程组中的任何子进程,如果子进程已经加入了别的进程组,waitpid不会对它做任何理睬;
pid < -1时, 等待一个指定进程组中的任何子进程,这个进程组的ID等于pid的绝对值