linux下进程管理

linux下进程管理

ID:21906076

大小:38.69 KB

页数:6页

时间:2018-10-25

linux下进程管理_第1页
linux下进程管理_第2页
linux下进程管理_第3页
linux下进程管理_第4页
linux下进程管理_第5页
资源描述:

《linux下进程管理》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Linux下进程管理+fork()函数什么是进程?运行起来的程序,就是进程,进程在内存中运行主流的操作系统中,都采用多进程多任务并行。每个进程的内部采用多线程实现并行在UNIX系统中,如何查看进程ps命令可以查看进程(ps–aux是linux的unix不支持)ps–只能查看当前终端起动的进程ps–ef:unix/linux通用的查看进程ps–aux:linux直接支持,unix不直接支持,但可以用whereisps定位,然后用/usr/ucb/ps-auxPPID父进程STAT进程状态:R 运行S休眠状态

2、;大多数进程 在多数时间都休眠。s代表这个进程有子进程;T停止或被追踪;X 死掉的进程(从来没见过)Z 僵尸进程(结束但没有回收内存等资源的进程)如果进程a起动了进程B,a叫b的父进程,b叫做子进程。(有些进程既是父进程,又是子进程)Unix进程的启动顺序:系统先启动进程0,进程0只负责启动进程1(init进程)或者启动进程1和进程2,其他进程都是进程1和进程2启动。unix用进程的pid管理进程,每个进程有唯一的一个PID,在同一时刻进程的PID不会重复。进程的pid可以重用(延时重用,类似手机号)PI

3、D的本质是一个整数,类似文件描述符。几个常用函数“getpid()取当前用户的IDgetppid() 取父进程的IDgetuid()/geteuid()取当前用户的ID(有效用户)启动子进程:1.fork()—复制父进程启动子进程2.vfork()+execl()–启动全新的子进程fork()创建子进程(简单的复杂函数)无参,返回子进程的PIDfork()通过复制父进程创建子进程会复制除了代码区外所有的内存区域间,代码区会共享fork()之前的代码只有父进程执行一次,fork()之后的代码,父子进程都执行

4、一次(执行2次)。1#include2#include3intmain(){4printf("begin");5pid_tpid=fork();//fork()函数有两次返回,父进程返回子进程的PID,子进程返回06printf("end%d%d",getpid(),pid);7return0;8}beginend111590end1115811159~~fork的中文意思是叉子渔叉如图(真的很形象)~fork()创建子进程后,父子谁先运行不确定(随系统不同)

5、,谁先结束不确定fork()创建子进程时,如果父进程有文件描述符,子进程会复制文件描述符,但不复制文件表。父子进程的关系fork()之后,父子进程同时运行,如果子进程先结束,子进程给父进程发一个信号,父进程负责回收子进程资源。fork()之后,父子进程同时运行,如果父进程先结束,子进程变成孤儿进程,会认进程1(init)做新的父进程,init进程叫孤儿院。fork()之后,父子进程同时运行,如果子进程发信号是出现了问题,或者父进程没有及时处理信号,子进程就会变成僵尸进程。父进程的缓冲区也会被复制到子进程。

6、./fork.c1#include2#include3intmain(){4printf("begin");5pid_tpid=fork();6if(pid==-1)perror("fork"),exit(-1);//fork()出错原因:1.系统进程总数有限额。2.用户进程总数有限额。fork()失败返回-1,结果是子进程创建失败,父进程继续运行fork()出错很难,一般是中毒了,一般情况下不会超额,所以可以不判断-1;7//练习:父子进程打印不同的内容8if(

7、pid==0){9printf("2");10printf("%d%d",getpid(),getppid());//子进程得其父进程11}12else{13printf("1%d%d",getpid(),pid);//父进程的子进程直接用fork()返回值pid1415}16return0;17}~--------------------------------------------------------------------------------------------------

8、---./fork2.c1#include2#include3#include4#include5inti1=10;6intmain(){7inti2=10;//i2在fork()之前,所以子进程会复制8char*str=malloc(10);9strcpy(str,"abcd");10pid_tpid=fork();11inti3=10;//i3父

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。