1 当派生子进程来处理客户连接时,必须捕获信号SIGCHLD
2 当捕获信号时,必须处理被中断的系统调用。比如当子进程结束时会向父进程发送信号SIGCHLD,如果这时父进程被阻塞在系统调用内部,会产生问题。最好是让内核重新启用该系统调用。
3 SIGCHLD的信号处理程序必须处理所有终止的子进程,以免产生僵尸进程。比如循环调用waitpid而不是调用wait。
1 当派生子进程来处理客户连接时,必须捕获信号SIGCHLD
2 当捕获信号时,必须处理被中断的系统调用。比如当子进程结束时会向父进程发送信号SIGCHLD,如果这时父进程被阻塞在系统调用内部,会产生问题。最好是让内核重新启用该系统调用。
3 SIGCHLD的信号处理程序必须处理所有终止的子进程,以免产生僵尸进程。比如循环调用waitpid而不是调用wait。