C/C++教程之父子进程
一、什么是进程
直观一点可以理解为一个执行起来的程序
所有进程属性采用结构体维护->树状结构体
ps 查看所有进程常见属性
top 查看系统进程执行状况
pstree 树形显示进程
kill 向进程发送信号
kill -s 信号 进程id
kill -l 显示进程能接收的所有信号
二、创建进程
进程有关的创建函数
int system(const char* filename);
建立独立进程,拥有独立的代码空间,独立的内存空间
等待新的进程执行完毕,system才返回
popen
exec系列函数
fork
pid_t fork();
创建进程
三、理解进程
1.父子进程的关系
独立的两个进程
pstree上面互为父子关系的两个进程节点
2.问题:
父进程先结束导致
-> 子进程就直接依托根进程init,成为孤儿进程,无任何危害
子进程先结束导致
-> 子进程会成为僵尸进程,不占用内存,不占用CPU,但在进程树占用一个节点
造成进程名额的资源浪费,必须处理僵尸进程
3.僵尸进程使用wait回收
4.父进程如何知道子进程退出
子进程结束通常会向父进程发送一个信号SIGCHLD(17)
5.父进程处理子进程退出信号
signal(int sig,void (*fun) (int));
向系统注册:只要sig信号发生,系统停止进程,并调用注册函数fun
当函数执行完毕,继续原来进程
6.父子进程的资源访问
6.1 内存资源
子进程克隆整个内存区域,但内存区域指向不同的物理空间
但内存独立,不能相互访问
6.2 文件资源
两个进程之间,文件描述符指向的是同一个文件
7. 多进程与文件锁
四、进程控制(后续更新...)
上一篇: oracle11g常用知识整理:
下一篇: 拼多多怎么开启多多爱消除消息提醒?