首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Linux之守护进程理解(2)

在系统V下可以简单地将SIGCHLD信号的操作设为SIG_IGN,即忽略掉。这样,内核在子进程结束时不会产生僵尸进程,这一点与BSD4不同,在BSD4下必须显示等待子进程结束才能释放僵尸进程。...防止在守护进程没有正常运转起来时,控制终端受到干扰退出或挂起,此处忽略了终端I/O信号、STOP信号     signal(SIGTTOU,SIG_IGN);     signal(SIGTTIN,SIG_IGN...);     signal(SIGTSTP,SIG_IGN);     signal(SIGHUP,SIG_IGN);     //由于子进程会继承父进程的某些特性,如控制终端、登录会话、进程组等,而守护进程最终要脱离控制终端到后台去运行...signal(SIGCHLD,SIG_IGN);     //守护进程不属于任何终端,所以当需要输出某些信息时,它无法像一般程序那样将信息直接输出到终端,可以使用linux中自带的syslogd守护进程

2.5K30

等待子进程的那些事儿

关于 SIGCHLD 信号,有以下几点需要注意: 如果在注册信号之前,就已经有已结束但未等待的子进程存在,则事件不会被触发; 可以为 SIGCHLD 注册一个处理器,也可以忽略该信号 (SIG_IGN)...忽略信号 之前提到,可以使用 SIG_IGN 来自动回收子进程,这里试一下使用 SIG_IGN 来代替 sig_cld,看看有什么改观: old handler 0 before wait pid 2557...出于好奇,我们看一下改使用 SIG_IGN 后的运行效果: before wait pid 2613 child 2612 exit child 2613 exit wait 2613 error 10...我们可以为 SIGCHLD 提供一个处理器,虽然在此信号处理器中无需再次等待子进程,但是我们拥有了获取子进程信息的能力,相对而言,比 SIG_IGN 更有用一些。...这期间为了保证其它子进程 (假设存在) 能正常回收,使用 SIG_IGN 注册了 SIGCHLD 信号。

2.4K30

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券