目录
一、进程的概念
(1)概念
(2)相关指令
二、父子孤尸
僵尸进程是指的进程终止之后,产生的终止状态被保存在内存中,等待父进程读取并回收这个终止状态。
三、进程的标识
四、创建子进程
五、进程间关系
因为代码区是不可修改的只读常量区,所以不需要使用两块不同的内存来存储信息;但是其他区域由于会有修改的可能,所以用到了两块不同的内存区域去存储信息。
所以父进程和子进程使用的是同样的一个文件表项,也就是说父进程对文件的操作会同步影响到子进程
六、进程的终止
(1)正常终止
在正常终止的情况下,会有几件收尾工作:
1.调用功能退出处理函数
2.冲刷并关闭所有I/O流
3.删除临时文件
4.调用_exit(status);
(2)注册退出处理函数
只要是由return和exit结束的进程都会由操作系统自动调用退出处理函数,我们只需要注册一下退出处理函数即可完成我们想要的结果,就好像c++中的析构函数。
(3)exit的底层调用
(4)异常终止
七、回收子进程
(1)wait
可以看到,我们这里在父进程中使用了wait函数去阻塞的方式等待子进程的结束,然后去收尸清理资源,但是因为子进程在死循环,不能被收尸,所以导致父进程也不能往下执行了。
(2)waitpid
waitpid就好像是一个进阶版的wait,他可以自由的选择是阻塞模式收尸还是非阻塞方式收尸,并且可以选择具体要收哪一个子进程的尸体。
八、创建新进程
(1)exec家族
(2)system
对于一般的创建新进程,我们建议使用system,因为不急操作方便,而且不容易出现错误,且他是标准库函数,各个平台都有很好的兼容性。