- 1、本文档共25页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LINUX进程控制
课程内容 linux下进程的创建、终止、控制;进程间资源的继承;多进程间的通讯;守护进程。
目 录
1. Linux进程概述 1
1.1. 进程标识 2
1.2. 进程的用户ID与组ID(进程的运行身份) 2
2. 进程的创建 3
2.1. system函数 4
2.2. fork函数 4
2.3. exec函数族 5
2.4. popen函数 7
3. 进程控制与终止 8
3.1. 进程的控制 8
3.2. 进程的终止 9
4. 进程间打开文件的继承 9
4.1. 用fork继承打开的文件 9
4.2. 用exec*继承打开的文件 10
4.3. 用管道(FIFO)传递打开的文件的信息 11
5. 进程间通信(Interprocess Communication,IPC) 13
5.1. 无名管道(PIPE) 13
5.2. 命名管道(FIFO) 15
5.3. 共享内存 18
5.4. 消息队列 20
6. 守护进程(Daemon) 24
Linux进程概述
进程是程序的执行实例,它是Linux的基本调度单位。一个进程由如下元素组成:
程序的当前上下文,即程序的当前执行状态;
程序的当前执行目录
程序访问的文件和目录
程序的访问权限,比如它的文件模式和所有权
内存和其他分配给进程的系统资源
内核使用进程来控制对CPU和其他系统资源的访问,并且使用进程来决定在CPU上运行哪个程序,运行多久以及采用什么特性运行它。内核的调度器负责在所有的进程间分配CPU执行时间,称为时间片(time slice),它轮流在每个进程分得的时间片用完后从进程那里抢回控制权。
进程标识
OS会为每个进程分配一个唯一的整型ID,做为进程的标识号(pid)。进程除了自身的ID外,还有父进程ID(ppid),所有进程的祖先进程是同一个进程,它叫做init进程,ID为1,init进程是内核自举后的一个启动的进程。init进程负责引导系统、启动守护(后台)进程并且运行必要的程序。
进程的pid和ppid可以分别通过函数getpid()和getppid()获得。
示例:
#include stdio.h
#include stdlib.h
#include unistd.h
int main()
{
printf(pid:%d ppid:%d\n,getpid(),getppid());
return 0;
}
进程的用户ID与组ID(进程的运行身份)
进程在运行过程中,必须具有一类似于用户的身份,以便进行进程的权限控制,缺省情况下,哪个登录用户运行程序,该程序进程就具有该用户的身份。例如,假设当前登录用户为gotter,他运行了ls程序,则ls在运行过程中就具有gotter的身份,该ls进程的用户ID和组ID分别为gotter和gotter所属的组。这类型的ID叫做进程的真实用户ID和真实组ID。真实用户ID和真实组ID可以通过函数getuid()和getgid()获得。
与真实ID对应,进程还具有有效用户ID和有效组ID的属性,内核对进程的访问权限检查时,它检查的是进程的有效用户ID和有效组ID,而不是真实用户ID和真实组ID。缺省情况下,用户的(有效用户ID和有效组ID)与(真实用户ID和真实组ID)是相同的。有效用户id和有效组id通过函数geteuid()和getegid()获得。
示例
#include stdio.h
#include stdlib.h
#include unistd.h
int main()
{
printf(uid:%d gid:%d euid:%d egid:%d\n,
getuid(),getgid(),geteuid(),getegid());
return 0;
}
开始时登录用户为ghaha(uid为500):
shellid
uid=500(ghaha) gid=500(ghaha) groups=500(ghaha)
编译生成可执行文件a.out,程序文件的属性可能为:
-rwxrwxr-x 1 ghaha ghaha 12132 Oct 7 09:26 a.out
执行结果可能为:
shella.out
uid:500 gid:500 euid:500 egid:500
现在将a.out的所有者可执行属性改为s
shellchmod u+s a.out
shellll
-rwsrwxr-x 1 ghaha ghaha 12132 Oct 7 09:26 a.out
此时改另外一个用户gotter登录并运行程序a.out
shellid
uid=5
您可能关注的文档
最近下载
- 7.2+弹力(课件)-2024-2025学年八年级物理下册同步精品课堂(人教版2024).pptx VIP
- 强震球:五年级《分数的意义》课件(13页)-有哪些信誉好的足球投注网站.pptx VIP
- 2023年苏州市相城区教育局招聘事业编制教师考试真题.pdf
- 混凝土课程设计无错版(中南大学).doc
- 隧道专业英汉词.doc
- 《项目管理精华:给非职业项目经理人的项目管理书》读书笔记.docx
- 《柏林广场A1》练习册听力原文Lektion1-6.doc
- 人教版八年级物理下册 《弹力》课件.ppt VIP
- 重污染天气重点行业移动源应急管理技术指南及编制说明.pdf VIP
- 足浴技师礼貌礼节培训方案.pptx
文档评论(0)