(1)当fork子进程时,必须捕获SIGCHLD信号;
Signal(SIGCHLD, sig_chld); /* must call waitpid() */
(2)当捕获信号时,必须处理被中断的系统调用;
struct sigaction act, oact;
act.sa_handler = func;
sigemptyset(&act.sa_mask);
act.sa_flags |= SA_RESTART;//设置自动重启被中断的系统调用
(3)SIGCHLD的信号处理函数必须正确编写,应使用waitpid函数以免留下僵死进程。
时间: 2024-10-18 17:45:04