5.进程控制.docVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5.进程控制

五、进程控制 系统调用,是指操作系统提供给用户程序的一组特殊的接口,通过这些接口用户程序可以获得操作系统内核提供的服务。如创建进程、进程调度、进程管理等。 为什么不能直接使用内核服务?这是因为Linux下为了更好地保护内核,把用户程序运行的空间分为用户空间与内核空间(用户态与内核态),它们运行在不同的级别上,在逻辑上是隔离的。因此用户不能直接使用内核的数据与内核函数,某些情况下需要得到内核的服务就需要用系统调用,通过系统调用,程序从用户空间进入到内核空间,调用完毕后再返回用户空间。 系统调用、API、系统命令关系如图。 说明 并不是一个API对应一个系统调用,一个API可能需要调用多个系统调用;系统命令则在API之上,它们是调用了API的可执行程序 进程是一个程序的一次执行过程。它与程序不同,程序只是静态的,是磁盘上的有序指令的集合没有执行的概念,而进程是动态的,它是程序的执行过程包括创建调度消亡的整个过程,是程序执行和系统调度资源的最小单位。 进程是通过进程控制块(PCB)来描述的,PCB包括进程的描述信息,控制信息,资源信息是进程的静态描述。 进程状态切换图 守护进程 简单地说就是后台进程,不受前台的控制的进程,守护进程也成为精灵进程, 操作流程: 第一步,创建子进程,父进程退出 第二步,调用setsid创建新会话 第三步,改变当前目录为根目录 第四步,改变文件掩码为0 第五步,关闭文件描述符 #include stdio.h #include stdlib.h #include fcntl.h #include sys/types.h #include unistd.h #define MAXFILE 65535 int main() { int i; pid_t pid; /*第一步,父进程退出*/ pid = fork(); if(pid 0) { perror(fork); exit(EXIT_FAILURE); } else if(pid 0) { exit(EXIT_SUCCESS); } /*第二步,创建新会话*/ setsid(); /*第三步,改变当前目录为根目录*/ chdir(/); /*第四步,改变文件掩码为0*/ umask(0); /*第五步,关闭文件描述符*/ for(i = 0;iMAXFILE;i++) close(i); /*以下就是守护程序要干的活*/ int fd; fd = open(/tmp/deamon.txt,O_CREAT|0666); if(fd 0) { perror(open); exit(EXIT_FAILURE); } while(1) { write(fd,deamon,6); sleep(5); } return 0; }

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档