- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式linux进程及进程间通信
嵌入式Linux进程编程 李超 lichao-runing@163.com讲课内容 进程基础 进程是什么? 怎样描述进程? 进程控制 进程的诞生 进程间的简单同步 进程间通信 进程间数据信息的传递 PART ONE 进程基础 关注点: 进程是什么 Linux怎样管理进程 在多任务系统中进程的调度 1.1进程是什么? gedit hello.c #include stdio.h void main() { while (1) { printf(“hello ,I am alive\n”); sleep(10); } } 进程和可执行程序的关系 进程是可执行程序的一次执行过程 进程是研究操作系统的核心 1.2 Linux中进程核心数据结构描述 进程的“人事档案” struct task_struct { pid_t pid; pid_t pgrp; struct task_struct *p_opptr, *p_pptr, *p_cptr, *p_ysptr, *p_osptr; } 进程的“人事档案”(CONT.) struct task_struct { …… struct mm_struct *mm; …… } 进程的“人事档案”(CONT.) struct task_struct { …… struct fs_struct *fs; struct files_struct *files; …… } 进程的“人事档案”(CONT.) struct task_struct { …… volatile long state; …… } 进程的“人事档案”(CONT.) struct task_struct { …… long counter; long nice; unsigned long policy; …… } 进程“人事档案”总结 进程的“人事档案”信息非常丰富,从各个侧面描述了进程 进程是Linux内核的核心,要了解Linux内核,必须首先掌握进程 PART TWO 进程控制 关注点 创建进程 进程控制 进程创建 进程创建 fork( ):产生子进程 头文件:#includeunistd.h 格式: pid_t fork(); 返回值: 0:子进程 子进程ID(大于0的整数):父进程 -1:出错 调用fork()函数后,系统将创建一个与当前进程相同的新的进程。它与原有的进程具有相同的数据、连接关系和从同一处执行的连续性 原有的进程称为父进程,新生的进程称为子进程 例1 产生新进程 #include stdio.h #include sys/type.h #include unistd.h void main() { pid_t pid; printf(“I am lonely,I will create a baby\n”); pid=fork(); if(pid0) { printf(“create baby failed\n”); exit(1); } printf(“haha,family add a new member\n”); } 例1 产生新进程 #include stdio.h #include sys/type.h #include unistd.h void main() { pid_t pid; printf(“I am lonely,I will create a baby\n”); pid=fork(); if(pid0) { printf(“create baby failed\n”); exit(1); } printf(“haha,family add a new member\n”); } Void main() { pid=fork(); if (pid0){创建进程失败} else if(pid==0) { } else { } } #include stdio.h #include sys/type.h #include unistd.h void main() { pid_t pid; printf(“I am lonely,I will create a baby\n”); pid=fork(); if(pid0) { printf(“create baby failed\n”); exit(1); } else if (pid==0) printf(“haha,I come to th
文档评论(0)