- 1、本文档共46页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 信号机制 信号阻塞与信号未决 int sigpending(sigset_t *set) 功能:检查当前已经产生但被屏蔽(阻塞)的所有信号 参数:set-存储结果的信号集 sigsuspend(const sigset_t *mask) 用于在接收到某个信号之前, 临时用mask替换进程的信号掩码, 并暂停进程执行,直到收到信号为止。sigsuspend 返回后将恢复调用之前的信号掩码。信号处理函数完成后,进程将继续执行。可用于进程同步 * 信号机制 信号接收和处理示例-sigrecv.cpp 信号阻塞和信号集操作示例-sigset.cpp 信号处理小结 一个信号处理器一旦被设置将一直起作用,除非在设置时使用了SA_ONESHOT标志 一个信号处理器执行过程中新到达的同一信号将被屏蔽。另外,可以在参数sa_mask中指定需要屏蔽的其它信号 一个信号被屏蔽时多次产生这个信号,当解除屏蔽时,这个信号只被发送一次 为了避免临界区代码被中断,可以在执行临界区代码时用sigprocmask屏蔽某些信号 Sigsuspend可用于等待某个信号实现进程同步 * 进程终止 系统调用exit终止进程 如果进程是某一控制终端的进程组组长,则向这个进程组的所有进程发送信号SIGHUP 关闭进程打开的所有文件描述符 如果进程有子进程,则将这些子进程的父进程设置为init 向父进程发送信号SIGCHLD * 处理子进程死亡 僵尸进程( zombie.cpp ) 子进程终止时如果父进程存在且未处理SIGCHLD信号则子进程变为僵尸进程 僵尸进程占据系统进程表项 清除僵尸进程的方法1( zombie1.cpp) 忽略SIGCHLD信号(信号处理函数为SIG_IGN) 忽略SIGCHLD信号时,系统将清除子进程的进程表项,这种方法依赖于Linux版本的实现 * 处理子进程死亡 清除僵尸进程的方法2( zombie2.cpp ) 调用函数wait或waitpid等待子进程 pid_t wait(int *status); 等待任意子进程终止,没有子进程终止时阻塞,如果没有子进程返回-1 pid_t waitpid(pid_t pid,int *status,int option); 这种方法没有兼容性问题,但主程序进入等待循环后不能做任何事情 * 处理子进程死亡 pid_t waitpid(pid_t pid,int *status,int option); pid-进程ID pid0,只等待进程id等于pid的子进程退出 pid=-1,等待任何一个子进程退出,同wait option-选项 WNOHANG-无子进程退出时不阻塞 status-存储状态信息 返回值 正常返回时为退出的子进程 id 设置了WNOHANG选项,且无子进程退出时返回0 出错时返回-1,errno为错误代码 * 处理子进程死亡 清除僵尸进程的方法3(zombie3.cpp) 捕获SIGCHLD信号 如果多个SIGCHLD信号同时到达,进程将只收到一个,因此信号处理函数中必须循环调用waitpid处理多个子进程终止 不能使用wait来循环处理多个终止的子进程,因为wait在没有子进程终止时会阻塞,waitpid函数要设置选项WNOHANG防止阻塞。 * 处理子进程死亡 清除僵尸进程的方法4(zombie4.cpp) 调用fork两次,使子进程成为孤儿进程,由init进程管理 这种方法第一次调用fork产生的子进程可能成为僵尸进程 这种方法第二次调用fork产生的子进程由init处理子进程退出,不会成为僵尸进程 * 守护进程 典型守护进程特点: 系统初始化时被init进程启动 生存期为系统执行时间 一直等待事件发生并处理事件 可以利用其他进程完成事件处理 不和任何终端发生联系 * 守护进程 启动守护进程的方法 系统启动时,进程init根据系统启动文件启动守护进程,以超级进程权限运行 Internet 超级服务器inetd可以启动很多守护进程 定时任务进程cron可以周期性的启动一些进程 在终端上由用户启动守护进程 * 守护进程 将用户进程转换为守护进程的步骤 调用fork,然后父进程退出,子进程①继续运行。 调用setsid创建新的session, ①成为头进程。 忽略信号SIGHUP,再次调用fork,然后父进程① (session的头进程)退出 。 调用函数chdir(“/”),使进程不使用任何目录 调用函数unmask(0),使进程对任何写的内容有权限 关闭所有打开的文件描述符 为标准输入(0),标准输出(1),标准错误输出(2)打开新的文件描述符 处理信号SIGCLD,避免守护进程的子进程成为僵尸进程 * 守护进程 inetd守护进
您可能关注的文档
- 第2章 电力电子器件.pdf
- 第2章 电力电子器件基本特性.ppt
- HXD3-电气系统介绍-讲课资料.ppt
- I/O管理与磁盘调度.ppt
- 第2章 光波导理论基础.ppt
- 第2章 集成电路材料结构与理论.ppt
- 第2章 可编程逻辑器件基础.ppt
- 第2章 软件性能测试基础.ppt
- 第2章 数据通信基础.ppt
- IC工艺技术8-金属化.ppt
- 安徽省A10联盟2024-2025学年高一上学期11月期中联考英语试卷(含答案).docx
- 2024-2025学年初中化学九年级上册(2024)科粤版(2024)教学设计合集.docx
- 艾滋病公益活动心得(真题12篇) .pdf
- 艾滋病健康精彩演讲稿(精选6篇) .pdf
- 浙江省九校2024-2025学年高一上学期11月期中联考数学试卷(含答案).docx
- 第10练细胞呼吸-2022年高二生物(一轮复习)(原卷版).docx
- 2024-2025学年小学英语四年级下册外研版(一起)教学设计合集.docx
- 艾滋病演讲稿十篇 .pdf
- 档案安全管理制度.docx
- 浙江省绍兴市多校2024-2025学年高一上学期期中联考数学试卷(含答案).docx
最近下载
- 第一单元龙的传人第1课我的名字 教案(表格式)一年级美术人教版(2024版).docx
- 广州数控GSK988Ti系列 编程操作手册2017年1月.pdf
- 台达伺服ASDA-AB系列应用技术手册.pdf
- (宪法)完整版课件.ppt
- 20241103-高盛-美国经济分析:2025年消费支出展望,回归正常稳健增速(摘要).docx VIP
- 高盛-中国房地产行业2025年展望-触底在望(摘要).pdf VIP
- 张毅—潜在失效模式与效应分析(三)课件.pptx VIP
- 茶文化考核试题及答案.pdf VIP
- 人教版(2024)七年级地理上册4.2《气温的变化与分布》优质课件.pptx
- 教科版科学三年级上册2空气占据空间吗 (说课课件)(共13张PPT).pptx
文档评论(0)