您的位置:首页 > 其它

信号处理函数中只修改标记,父进程等待条件真来做处理

2015-10-30 00:00 375 查看
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

static int g_sig = 0;

void user1(int sig)
{
#if 0
printf("user1 ....sig...%d\n", sig);
(void)signal(SIGUSR1, SIG_DFL);
#else
g_sig = sig;
#endif
}
int main(int argc, char **argv)
{

pid_t pid;

pid = fork();
switch(pid) {
case -1:
/* Failure */
perror("fork failed");
exit(1);
case 0:
/* child */
sleep(5);
kill(getppid(), SIGUSR1);
printf("done..children\n");
exit(0);
}
//in parent
(void)signal(SIGUSR1, user1);

pause();
if (g_sig == SIGUSR1) {
printf("user1 ....sig...%d\n", g_sig);
(void)signal(SIGUSR1, SIG_DFL);
}
printf("done..father\n");
exit(0);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: