- 1、本文档共53页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《《linux软件工程师(C语言)实用教程》第6章》.ppt
第 6 章 进程控制 本章重点 进程的基本概念及进程的结构 Linux环境下进程的相关函数的应用 守护进程的概念、启动和建立 进程控制程序的编写 6.1 进程简介 进程是一个程序的一次执行的过程。 在Linux环境下,每个正在运行的程序都称为进程。 每个进程包含进程标识符及数据,这些数据包含进程变量、外部变量及进程堆栈等。 1. 进程与程序 由于一个进程对应一个程序的执行,但进程不等同于程序。因为程序是静态的概念,进程是动态的概念。 进程是程序执行的过程,包括了动态创建、调度和消亡的整个过程。进程是程序执行和资源管理的最小单位。 对系统而言,当用户在各级系统中键入命令执行一个程序的时候,它将启动一个进程,因此,一个程序可以对应多个进程。 6.1 进程简介 2. Linux环境下的进程管理 Linux环境下的进程管理包括启动进程和调度进程。 启动进程有两种主要途径:手工启动和调度启动。 (1)手工启动又可分为前台启动和后台启动。 前台启动:是手工启动一个进程的最常用方式。一般地,当用户输入一个命令时,就已经启动了一个进程,并且是一个前台的进程。 后台启动:往往是在该进程非常耗时,且用户也不急着需要结果的时候启动。一般地,当用户输入一个命令结尾加上一个“”号,就是后台启动一个进程。 6.1 进程简介 (2)调度启动 有时系统需要进行一些比较费时而且占用资源的维护工作,并且这些工作适合在深夜无人职守的时候进行,这时用户就可以事先进行调度安排,指定任务运行的时间或者场合,到时候系统就会自动完成这一切工作。 6.1 进程简介 调度进程包括对进程的中断操作、改变优先级、查看进程状态等。 Linux环境下常见的进程调用命令 6.2 Liunx进程控制 Linux环境下在进程启动时,系统会分配一个唯一的数值给每个进程,这个数值就称为进程标识符。 在Linux中最主要的进程标识有进程号(PID)和它的父进程号(PPID)。 PID惟一地标识一个进程。 PID和PPID都是非零的正整数。 在Linux中获得当前进程的PID和PPID的系统调用函数为getpid和getppid函数。 6.2 Liunx进程控制 例6-1:设计一个程序,要求显示Linux系统分配给此程序的进程号(PID)和它的父进程号(PPID)。 源程序代码: 6.2 Liunx进程控制 getpid函数说明 6.2.1 进程的相关函数 Linux c与进程相关的主要函数 6.2.2 进程创建 1. exec函数 例6-2:设计一个程序,程序在运行时,能执行vim程序,即创建一个新的进程,并用ps命令查看程序的进程号与vim的进程号。 源程序代码: 6.2.2 进程创建 编译、运行程序,系统会出现运行结果,先显示Linux系统分配的进程号(PID),接着运行vim程序,创建新的进程。 再打开一个终端,用ps查看原进程和新创建进程的进程号(PID)。 可以看到,在新进程创建后,原来的进程已经终止了。 在用execve函数创建新进程后,会以新的程序取代原来的进程,然后系统会从新进程运行,但是新进程的PID值会与原来进程的PID值相同。一般情况下,在运行execve函数后是不会返回原进程的,只有在错误时才会返回-1,所以在原进程中的execve函数下方,加入perror函数,输出错误信息,并返回1,表示有错误发生。 6.2.2 进程创建 实际上,在Linux中并没有exec函数,而是有6个以exec开头的函数族。 exec函数族的6个成员函数的语法 6.2.2 进程创建 思考题1:execv函数的应用,要在程序中执行命令:ps -ef,命令ps在/bin目录下。在这一函数中,参数v表示参数传递(含命令)为构造指针数组方式: char *arg[]={ps,-ef,NULL}; 函数的使用为: execv(/bin/ps,arg); 参考程序: #includestdio.h /*文件预处理,包含标准输入输出库*/ #includeunistd.h /*文件预处理,包含getpid、getppid函数库*/ int main () /*C程序的主函数,开始入口*/ { char *arg[]={ls,-al,NULL}; execv(/bin/ls,arg); return 1; } 6.2.2 进程创建 思考题2:execlp 函数的应用,要在程序中执行命令:ps -ef,命令ps在/bin目录下。在这一函数中,参数l表示命令或参数逐个列举,参数p为文件查找方式(不需要给出路径)。因而此函数的调用形式为: execlp(ps,ps,-ef,NULL); 请编写一程序进行调试。
您可能关注的文档
- 《Two-level downlink scheduling for real-time》.pdf
- 《Two-level modeling framework for pedestrian route choice and walking behaviors》.pdf
- 《Two-level refined direct optimization》.pdf
- 《Two-photon laser scanning fluorescence microscopy using photonic crystal fiber》.pdf
- 《U3 my first job》.ppt
- 《Ubuntu下配置java环境(JDK1.6+eclipse+myeclipse+tomcat)》.doc
- 《Ubuntu系统环境下搭建LAMP服务器》.doc
- 《ultranshort laser pulse》.doc
- 《Ultraviolet light-emitting diodes based on group three nitrides》.pdf
- 《Unbalanced Magnetic Pull Due to Asymmetry and Low-Level Static Rotor》.pdf
- 《《Linux运维趋势》第16期_CDN服务器缓存系统概述》.pdf
- 《《Red Hat Linux服务器管理及配置实战详解》高清版》.pdf
- 《《Velocity_java开发指南》中文版》.doc
- 《《改善JAVA程序的151个建议》核心思想解读》.doc
- 《《数据结构(Java版)(第2版)》习题解答》.doc
- 《《日内交易大学》第二章全面的LEVEL2技术完整版》.pdf
- 《《汉语文化》_The Lantern Festival Night》.pdf
- 《《移动通信软件编程基础—Java语言》第8章》.ppt
- 《《程序员(JAVA)》(四级)培训大纲》.doc
- 《《程序员(JAVA)》(四级)样题》.doc
最近下载
- 2019 2020人音版小学六年级下册质量检测音乐试卷及答案.doc
- NB-T11094-2023水下自护混凝土技术导则.pdf
- 第六章 1 牡丹月季.ppt VIP
- 2025【维维股份财务风险及应对策略探析9200字】.doc
- 20210730-大有期货-煤炭期货月度分析报告:保供增产持续发力,煤价或阶段性回调.pdf VIP
- 2023入团团史团章考试精选100题题库(含答案).pdf
- 教学成果奖励 高考奖励方案.docx VIP
- 约翰迪尔7600_7700_7800拖拉机维修手册 英文l.pdf
- DB41_T 1037-2015垂直度检测尺校准装置规范.doc
- 2024年医药卫生考试-医院信息科笔试参考题库含答案.docx
文档评论(0)