linux课件讲义:进程_第1页
linux课件讲义:进程_第2页
linux课件讲义:进程_第3页
linux课件讲义:进程_第4页
linux课件讲义:进程_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

进程可执行(二进制)程序被系统加载到内存空间运行时,就是进程。进程是程序位于内存中的映像,是动态的。程序是磁盘上的文件,是静态的。Linux下的进程每个进程都有唯一的标识号——PID。进程可以产生新的进程,构成父子关系,形成一棵进程树。进程都有一个用户标识,对应着运行此进程的用户id,不是进程对应文件的所有者。进程有效用户标识:用来控制进程对文件系统的访问。如果可执行文件没有设置suid或sgid,就为运行此进程的用户,否则为文件的所有者。Linux下的进程进程组一个进程属于且仅属于一个进程组。向进程组发送信号,则组内所有进程都收到。会话每个进程都属于一个唯一的会话。用户登录后即产生一个会话,包含了若干进程组。会话的id是首进程组的id一个会话中只有一个进程组是前台进程组,和控制终端交互,获取输入,接收信号。获取进程的属性getpidgetppidgetpgrpgetuidgeteuidgetgidgetegidgetsid更改进程归属的组setpgid(0,0)将使调用进程成为一个新进程组的组长,即开始一个新进程组。等同于setpgrp。setpgid将进程放入新的会话setsid调用进程不可为其当前所属会话的首进程。将创建一个新会话,新进程组,进程将成为它们的首进程,并且没有控制终端。Linux的控制终端传说过去是通过RS232串口连接到主机。当下通过网络连接(伪终端)。ttystty-a进程的控制终端用来向进程输入数据,或向进程发送信号。控制终端关闭时,进程会收到SIGHUP信号。psaux进程的状态Zombie除PID为0的进程外,所有进程都有父进程。Zombie进程占用进程表空间,影响整个系统的效率。父进程若要长时间运行,不断地生成子进程,则一定要用wait来收尾子进程。进程的优先级多任务:同时执行多个任务(进程)。虚拟多任务:单个CPU,或是进程数〉CPU数。时间片轮转:毫秒级的调度调度的顺序:优先级。进程优先级数值越低,进程越优先被调度。进程的优先级优先级数值=优先级别(PR)+谦让值(NI)优先级别从父进程继承而来,不可更改系统调用nice可将进程默认的谦让值从0改大,或改小(root)修改进程的谦让值setprioritygetpriority真实完整的mainint

main(int

argc,char*argv[],char*env[])获取命令行参数getopt用optstring指明所有可能的选项,及每个选项的参数情况。比如“:Il:o:vh”通过循环,每次从getopt返回一个从命令行解析出的选项,如此选项有参数,则可以从optarg获取再无选项时,getopt返回-1;遇到optstring中未指明的选项,返回“?”;如果碰到丢失参数的选项,则看optstring的首字符,如果是“:”,则返回“:”,否则返回“?”staticconstchar*optString="Il:o:vh";intopt=getopt(argc,argv,optString);while(opt!=-1){ switch(opt){ case'I':

globalArgs.noIndex=1; break; case'l':

globalArgs.langCode=optarg; break; case'o':

globalArgs.outFileName=optarg; break; case'v':

globalArgs.verbosity++; break; case'h': case'?':

display_usage(); break; default: break; } opt=getopt(argc,argv,optString); }获取命令行参数获取命令行参数getopt_long支持解析“—optionargument”这样的选项structoption{char*name;

int

has_arg;

int*flag;

int

val;};staticconstchar*optString="Il:o:vh?";staticconststructoptionlongOpts[]={{"no-index",no_argument,NULL,'I'},{"language",required_argument,NULL,'l'},{"output",required_argument,NULL,'o'},{"verbose",no_argument,NULL,'v'},{"randomize",no_argument,NULL,0},{"help",no_argument,NULL,'h'},{NULL,no_argument,NULL,0}};获取命令行参数longstaticconstchar*optString="Il:o:vh";intopt=getopt_long(argc,argv,optString,longOpts,&longIndex);while(opt!=-1){ switch(opt){ case'I':

globalArgs.noIndex=1; break; case'l':

globalArgs.langCode=optarg; break; case'o':

globalArgs.outFileName=optarg; break; case'v':

globalArgs.verbosity++; break; case'h': case'?':

display_usage(); break; default: break; } opt=getopt_long(argc,argv,optString,longOpts,&longIndex); }全局的环境变量:定义在/etc/profile中特定于用户的环境变量:在$HOME中的.profile或.bashrc中定义获取进程的环境变量临时的环境变量:用export定义,特定于此会话getenvputenv为进程分配内存函数的局部变量在进程的栈中分配如果对某个进程,栈的大小不够而引发执行时错误(stackoverflow),可临时用ulimit–s改大堆栈在堆(heap)中分配内存,malloc,释放内存,freefork产生一个新进程,复制当前进程的内存镜像代码段是完全共享的,数据段,堆栈是独立的(复制品);实际用户(组)ID,有效用户(组)ID相同;控制终端,进程组ID和会话ID相同;环境变量及文件创建掩码UMASK;打开的文件描述符fork父进程fork返回大于0返回0父进程父进程pid_t

new_pid;new_pid=fork();switch(new_pid){ case-1:/*Error*/ break; case0:/*Wearechild*/ break; default:/*Weareparent*/ break;}forkexec将当前进程的内存镜像完全替换!(借尸还魂?)顺利执行的情形下,exec系列函数不会返回;如果有返回值,那一定是-1,此时errno纪录了出错的原因。两种分类:按参数是以list方式提供还是以vector方式提供分为:execl,execlp,execle和execv,execvp按是否搜索路径来寻找可执行文件来分:execl,execle,execv和execlp,execvpexec#include<unistd.h>/*Exampleofanargumentlist*//*Notethatweneedaprogramnameforargv[0]*/char*constps_argv[]={“ps”,“-ax”,0};/*Exampleenvironment,notterriblyuseful*/char*constps_envp[]={“PATH=/bin:/usr/bin”,“TERM=console”,0};/*Possiblecallstoexecfunctions*/execl(“/bin/ps”,“ps”,“-ax”,0);/*assumespsisin/bin*/execlp(“ps”,“ps”,“-ax”,0);/*assumes/binisinPATH*/execle(“/bin/ps”,“ps”,“-ax”,0,ps_envp);/*passesownenvironment*/execv(“/bin/ps”,ps_argv);execvp(“ps”,ps_argv);execve(“/bin/ps”,ps_argv,ps_envp);system用一个shell启动参数所指明的程序,然后,等着shell返回。/bin/sh-ccommand顺利执行的情形下,system返回程序的返回值;如果不能启动shell

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论