进程(process)
是计算机资源分配和调度的基本单元。
PID(process identifier:进程标识)
当运行一个程序,系统自动为进程分配一个PID号。
暂时唯一性:如果进程中止,PID会被回收,然后分配给其他的进程用。 (--中止包括正常结束吗?)
父进程与子进程
一个进程可以创建1个或多个进程。这就是父进程fork子进程的过程。而每一个子进程又可以创建出自己的子进程。这样就形成了树状结构模型。整个linux系统的所有进程也就是一个树形结构。而树根是所有进程的祖先,是系统创造的,PID=0的0号进程。
僵尸进程
子进程退出时,父进程就会来获取子进程的退出状态。但如果父进程不获取子进程的退出状态,造成的后果是子进程虽然退出了,到那时子进程的状态信息会一直占用进程表中。系统进程表是非常宝贵的资源,如果都被退出的子进程占用就没法创建子进程了。
孤儿进程
父进程在子进程之前退出了,子进程的没人来管。就托管给了init进程。
资源的分配
WIFEXITED(status) 这个宏来表示是否正常退出的,如果正常退出返回非零值。
WEXITSTATUS(status)这个宏是在WIFEXITED(status)返回非零值后,取退出码用的。例如exit(5),那么最后取得的返回码是5。
参考:
https://www.ibm.com/developerworks/cn/linux/kernel/syscall/part3/