一 进程基础理论
进程 - 一个在内存中运行的程序
主流的操作系统基本都支持多进程。
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
进程ID在同一时刻 确保唯一,但支持延迟重用。
取进程ID的函数:

本文介绍了进程的基础理论,包括进程的定义、查看进程的方法、进程状态以及父子进程关系。详细讲解了进程ID的获取,并重点阐述了创建子进程的fork()函数,包括其工作原理、使用方式和注意事项。最后讨论了进程的结束方式和不同退出函数的区别。
最低0.47元/天 解锁文章
338

被折叠的 条评论
为什么被折叠?



