网站大量收购闲置独家精品文档,联系QQ:2885784924

Linux多进程绪论.doc

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

***** + 关注
实名认证
内容提供者

我是自由职业者,从事文档的创作工作。

1亿VIP精品文档

相关文档