概要:

守护、僵尸、孤儿进程

https://blog.csdn.net/u012411498/article/details/80839268

僵尸进程(Zombie Process)

一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵尸进程。

孤儿进程(Orphan Process)

一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程所收养,并由init进程对它们完成状态收集工作。

守护进程(Daemon Process)

守护进程就是在后台运行,不与任何终端关联的进程,通常情况下守护进程在系统启动时就在运行,它们以root用户或者其他特殊用户(apache和postfix)运行,并能处理一些系统级的任务。

进程控制

进程号(PID):标识进程的一个非负整数

父进程号(PPID):任何进程(除init进程)都由另一个进程创建,该进程称为被创建进程的父进程,对应的进程号称为父进程号(PPID)。

进程组号(PGID):进程组是一个或多个进程的集合。它们之间相互关联,进程组可以接收同一终端的各种信号,关联的进程有一个进程组号(PGID)。

 #include <sys/types.h>
 #include <unistd.h>
 ​
 pid_t getpid(void); // 获取本进程号
 pid_t getppid(void); // 获取父进程号
 pid_t getpgid(pid_t pid); // 获取指定进程的PGID(0为当前PGID)
 ​
 pid_t fork(void); // 创建进程(成功:子进程中返回0,父进程中返回子进程ID)(失败:返回-1)
 ​
 // 进程挂起sec秒
 // 挂起结束切换为就绪态
 unsigned int sleep(unsigned int sec);