




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
进程可执行(二进制)程序被系统加载到内存空间运行时,就是进程。进程是程序位于内存中的映像,是动态的。程序是磁盘上的文件,是静态的。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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 可行性研究报告核准的请示
- 2025年中国接触式读卡器行业发展监测及市场发展潜力预测报告
- 风能发电可行性研究报告
- 2025年中国锥子行业市场发展现状及投资战略咨询报告
- 2024-2030全球数智化服务行业调研及趋势分析报告
- 虹口区景观工程管理办法
- 血站管理办法(暂行)
- 裕安区娱乐设施管理办法
- 衡水市失业保险管理办法
- 西宁市智库建设管理办法
- GB/T 2934-2007联运通用平托盘主要尺寸及公差
- 品牌战略定位课件
- 2022年武汉东湖学院辅导员招聘考试笔试试题及答案解析
- 医疗技术分级授权与再授权申请表
- 如何拓展与经营人脉关系-顶尖销售培训 (人脉开拓+整合经营人脉+竞争力)
- 儿童腺病毒肺炎诊疗规范课件
- MBTI人格理论教学课件
- DB65∕T 2810-2009 核桃玛仁糖-行业标准
- 商业银行风险预警系统整体架构设计
- UPVC双壁波纹管
- 型直线振动筛使用说明书中文
评论
0/150
提交评论