在网络编程时我们可能会遇到的三种情况

(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函数以免留下僵死进程。

 

posted @ 2016-08-28 22:22  hgrical_小农  阅读(132)  评论(0编辑  收藏  举报