一 进程基础理论
进程 - 一个在内存中运行的程序
主流的操作系统基本都支持多进程。
Linux中查看进程的方法
ps - 查看本终端启动的进程
ps -aux Linux专用的查看进程
ps -ef Unix/Linux通用的查看进程
显示的东西有所差别,Unix系统不直接支持ps -aux ,但/usr/ucb/ps -aux 可以执行。
kill -9 进程ID 可以杀进程。
如果进程a启动了进程b,a叫父进程,b叫子进程。
Unix/Linux的进程启动次序,首先内核启动0进程,0进程 启动 1进程和2进程(有些Linux只启动1进程),1进程 和 2进程 再 启动其他所有进程。
进程的常见状态:
S - 休眠状态(省资源)
s - 有子进程
O - 可运行状态
R - 运行状态
Z - 僵尸进程(已经结束但资源没有回收的进程)
父子进程之间的关系:
1. 父进程启动子进程后,父子进程同时运行。
2. 如果子进程先结束,子进程会给父进程发信号,由父进程负责回收子进程的相关资源。
3. 如果父进程先结束,子进程变成孤儿进程,孤儿进程会把init进程(进程1)作为新的父进程,init进程也叫孤儿院。
4. 如果子进程先结束,同时发的信号父进程没有收到或者子进程没有发信号,子进程就变成僵尸进程。
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(){
printf("父进程%d开始运行\n",getpid());
pid_t pid = fork();
if(pid == 0){
printf("子进程%d开始运行,父进程%d\n",
getpid(),getppid());
sleep(3);
printf("休眠结束,父进程%d\n",getppid());
exit(0);
}
sleep(1);
printf("父进程%d结束\n",getpid());
return 0;
}
二 进程ID
关于进程的ID - PID