Linux下进程的管理.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux下进程管理+fork()函数什么是进程?运行起来的程序,就是进程,进程在内存中运行主流的操作系统中,都采用多进程多任务并行。每个进程的内部采用多线程实现并行在UNIX 系统中,如何查看进程ps命令可以查看进程 (ps –aux是linux的 unix不支持)ps – 只能查看当前终端起动的进程ps –ef :unix/linux通用的查看进程ps –aux:linux直接支持,unix不直接支持,但可以用 whereis ps 定位,然后用/usr/ucb/ps -aux PPID 父进程STAT进程状态:R 运行S休眠状态;大多数进程 在多数时间都休眠。s代表这个进程有子进程;T停止或被追踪;X 死掉的进程(从来没见过)Z 僵尸进程(结束但没有回收内存等资源的进程)如果进程a起动了进程B,a叫b的父进程,b叫做子进程。(有些进程既是父进程,又是子进程)Unix进程的启动顺序:系统先启动进程0,进程0 只负责启动进程1(init进程)或者启动进程1和进程2,其他进程都是进程1和进程2启动。unix用进程的pid管理进程,每个进程有唯一的一个PID,在同一时刻进程的PID不会重复。进程的pid可以重用(延时重用,类似手机号)PID的本质是一个整数,类似文件描述符。几个常用函数“getpid() 取当前用户的IDgetppid() 取父进程的IDgetuid()/geteuid() 取当前用户的ID(有效用户)启动子进程:fork()—复制父进程启动子进程vfork()+execl() –启动全新的子进程fork()创建子进程(简单的复杂函数)无参,返回子进程的PIDfork()通过复制父进程创建子进程会复制除了代码区外所有的内存区域间,代码区会共享 fork()之前的代码只有父进程执行一次,fork()之后的代码,父子进程都执行一次(执行2次)。1 #includestdio.h 2 #includeunistd.h 3 int main(){ 4 printf(begin\n); 5 pid_t pid=fork();//fork()函数有两次返回,父进程返回子进程的PID,子进程返回0 6 printf(end %d %d\n,getpid(),pid); 7 return 0; 8 }beginend 11159 0end 11158 11159~ ~ fork的中文意思是叉子渔叉如图(真的很形象)~ fork()创建子进程后,父子谁先运行不确定(随系统不同),谁先结束不确定fork()创建子进程时,如果父进程有文件描述符,子进程会复制文件描述符,但不复制文件表。父子进程的关系fork()之后,父子进程同时运行,如果子进程先结束,子进程给父进程发一个信号,父进程负责回收子进程资源。fork()之后,父子进程同时运行,如果父进程先结束,子进程变成孤儿进程,会认进程1(init)做新的父进程,init进程叫孤儿院。fork()之后,父子进程同时运行,如果子进程发信号是出现了问题,或者父进程没有及时处理信号,子进程就会变成僵尸进程。父进程的缓冲区也会被复制到子进程。./fork.c1 #includestdio.h 2 #includeunistd.h 3 int main(){ 4 printf(begin\n); 5 pid_t pid=fork(); 6 if(pid==-1)perror(fork),exit(-1);//fork()出错原因:系统进程总数有限额。用户进程总数有限额。fork()失败返回-1,结果是子进程创建失败,父进程继续运行 fork()出错很难,一般是中毒了,一般情况下不会超额,所以可以不判断-1; 7 //练习:父子进程打印不同的内容 8 if(pid==0){ 9 printf(2 \n); 10 printf(%d %d\n,getpid(),getppid());//子进程得其父进程 11 } 12 else{ 13 printf(1 %d %d\n,getpid(),pid);//父进程的子进程直接用fork()返回值pid 14 15 } 16 return 0; 17 }~ -----------------------------------------------------------------------------------------------------./fork2.c1 #includestdio.h 2 #includeunistd.h 3 #includestdlib.h 4 #in

文档评论(0)

wuyoujun92 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档