视频2-9等待子进程退出的问题
来源:2-9 服务程序的调度

慕前端9358497
2022-11-13
吴哥,这段代码,用了两种避免子进程结束后变成僵尸进程的方法,能否删掉一个呢,我自己测试时发现保留任何一个也可以实现一样的功能
写回答
3回答
-
长歌_吴从周
2023-07-20
你问的问题不好回答,你加入课程的Q群中来,然后私信我,加我为好友,我语音和你说。
00 -
weixin_慕娘6306342
2023-07-20
procctl程序的功能是实现周期性的调度别的程序运行,而代码signal(SIGCHLD,SIG_DFL)的作用是使得父进程能够接受到当子进程退出后内核进程发来的信号,这个信号的含义是内核进程告诉父进程你的子进程结束了,退出了。
你所说的的删除这两个中的任何一个代码都不会有僵尸进程产生的问题,的确,你删除任何一条代码,都不会有僵尸进程产生。
但是本程序的功能是实现周期性的调度别的程序运行,当你将signal(SIGCHLD,SIG_DFL)删除时,父进程将无法在监听子进程是否结束,while循环中,他会直接进入sleep(atoi())这行代码,然后在继续循环,也就是说父进程根本没有阻塞等待直到子进程结束才睡眠,然后再调度
00 -
长歌_吴从周
2022-11-14
你没有理解这个程序的目的,在这个程序中,父进程要等待子进程退出,与僵尸进程无关,建议你再看一遍视频。
00
相似问题