PCB 进程控制块
getenv 获取环境变量
父进程先死,子进程变为孤儿。
加sleep,让父进程最后死。
查看进程信息:
ps aux
有ppid信息:
ps ajx
杀死进程:
kill -9 pid
kill表示给进程发信号,-9表示发9号信号
kill -l 查看信号信息
生5个子进程
精确控制失去几号子进程
父子进程间遵循读时共享,写时复制的原则,节省内存开销。
即使是全局变量,也不是共享的,读时共享,写时就复制了。
execl execlp
底层把代码段替换了。进程ID不变。换核不换壳。
execl 需要加路径
孤儿进程
僵尸
子进程已经死了,但是没有被回收,所以称为僵尸进程。
解决:杀死父进程,init会领养它,并负责回收它。
wait 函数
(没有回收到子进程,waitpid直接return了)
(可以回收到)
回收n个子进程
用waitpid实现
#include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/wait.h> int main() { int i=0; pid_t pid; for(i=0;i<5;i++){ pid=fork(); if(pid==0){ break; } } if(i==5){ printf("I am the fathern"); while(1){ pid_t wpid=waitpid(-1,NULL,WNOHANG); if(wpid==-1){ break; }else if(wpid>0){ printf("recycle wpid=%dn", wpid); } } while(1){ sleep(1); } } else if(i<5){ sleep(i); printf("I am the child, i=%d, pid=%dn", i, getpid()); } return 0; }
原文链接: https://www.cnblogs.com/FEIIEF/p/12409998.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/333349
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!