- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[计算机软件及应用]第4章Linux进程控制
4.9 Linux进程 TASK_UNINTERRUPTIBLE (不可中断的等待状态) 除了不会因为接收到信号而被唤醒从而投入运行外,这个状态与可中断 等待状态相同。 TASK_ZOMBIE (僵死状态) 表示进程已经结束,但其父进程还没有调用wait()系统调用。子进程的进程描述符在此之前仍然被保留 4.10 Linux进程控制 Linux提供了许多系统调用对进程进行控制。如: 创建一个新进程fork函数; 重载进程映像exec系列函数; 进程等待wait函数,waitpid函数; 进程的自我终止exit函数; 获取进程标识号getpid函数; 获取父进程标识号getppid函数等。 编译并运行这个程序: $gcc fork_test.c -o fork_test $./fork_test PID before fork():1991 I am the parent process, my process ID is 1991 I am the child process, my process ID is 1992 再运行一遍,输出结果可能不同。请考虑一下为什么? else { /* 父进程程序*/ for ( i = 1; i 10; i ++ ) { sleep(1); printf(This is parent process\n); } } } 写时复制(copy on write) fork函数复制这两个段,只是“逻辑”上的,并非“物理”上的。也就是说,实际执行fork时,物理空间上两个进程的数据段和堆栈段都还是共享着的,当有一个进程写了某个数据时,这时两个进程之间的数据才有了区别,系统就将有区别的“页”从物理上也分开。系统在空间上的开销就可以达到最小。这就是写时复制。 格式: void exit ( int status ) 功能:进程终止,具体完成下例工作: 将进程置僵死状态 释放其所占有的资源 向父进程发本进程死信号,并发送信息status给父进程,将自己及自己的子进程运行CPU的时间总和留待父进程使用wait( )回收。 返回值:无 头文件: #include stdlib.h else { //父进程等待子进程 wait(0); return 0; } } 与一般情况不同,exec函数族的函数执行成功后不会返回,因为调用进程的实体,包括代码段,数据段和堆栈等都已经被新的内容取代,只留下进程ID等一些表面上的信息仍保持原样。只有调用失败了,它们才会返回一个-1,从原程序的调用点接着往下执行。 execl()、execle()、execlp():程序参数直接出现在系统调用实参中 格式:execl(char *file, char *arg, …) 例如:execl(“/bin/ls”,”ls”,”-al”,(char *)0); execlp(ls, ls, -al, /etc/passwd,(char *)0); Linux进程的定义 Linux进程描述符 Linux状态转换 Linux进程控制 例4 int main(void) { pid_t pid; pid =fork(); if (pid0) exit(0); else if (pid == 0) { //如果是子进程 睡眠20秒 printf(children : %d \r\n,getpid()); sleep(20); return 0; } 4 .exec系统调用 说是exec系统调用,实际上在Linux中,并不存在一个exec()的函数形式,exec指的是一个函数簇,一共有6个,分别是: #include unistd.h int execl(const char *path, const char *arg, ...); int execlp(const char *file, const char *arg, ...); int execle(const char *path, const char *arg, ..., char *const envp[]); int execv(const char *path, char *const argv[]); int execvp(const char *file, char *const argv[]); int execve(const char *path, char *const argv[], char *const envp[]); exec函数族的作用是根
您可能关注的文档
- [计算机软件及应用]用美工笔通临书谱.doc
- [计算机软件及应用]白领10元午餐地图 蹭大学食堂参加网上团购.doc
- [计算机软件及应用]皮德常《面向对象的程序设计》课程ppt.ppt
- [计算机软件及应用]白盒测试及其用例的设计.ppt
- [计算机软件及应用]电话营销管理系统解决方案.ppt
- [计算机软件及应用]短信业务介绍--.ppt
- [计算机软件及应用]石竹元数据产品MetaOne介绍.pdf
- [计算机软件及应用]相关技术 移动云计算服务端技术.ppt
- [计算机软件及应用]研究生院-Lecture Notes for DB.ppt
- [计算机软件及应用]电子商务应用模型.doc
- 2012-2021北京重点校高一(下)期中语文汇编:词类活用.pdf
- 电力市场与经济运行优化:电力市场优化算法_(28).电力市场中的市场力分析.docx
- 医院培训课件:《俯卧位通气的护理》.pptx
- 电力市场与经济运行优化:电力系统能效优化方法_(1).电力市场基础理论.docx
- 电力市场与经济运行优化:电力系统能效优化方法_(9).电力系统运行与能效优化.docx
- 电力市场与经济运行优化:电力系统能效优化方法_(15).电力市场与环境影响分析.docx
- 电力市场与经济运行优化:电力系统优化调度_(1).电力市场基础与原理.docx
- 电力市场与经济运行优化:电力系统优化调度_(14).电力市场改革政策与影响.docx
- 电力市场与经济运行优化:电力系统运行优化_(4).电力系统运行基础.docx
- 2025年航运行业分析.docx
文档评论(0)