【发布时间】:2012-02-15 08:54:02
【问题描述】:
您好,我有一个程序需要子进程来修改父进程跟踪的链接列表。基本上在父进程中,我有一个信号处理程序,例如 ..
struct sigaction sa;
sa.sa_handler = someFunction;
sigemptyset(&sa.sa_mask);
sa.sa_flags = SA_RESTART;
if(sigaction(SIGUSR1, &sa, NULL) == -1){
printf("We have a problem, sigaction is not working.\n");
perror("\n");
exit(1);
}
其中 sa_handler 是修改函数。然后我有一个父进程包含的全局链表,称为结构连接客户端。我用来修改链接列表的函数有效,但是当我调用信号处理程序时...
if(!fork){
raise(SIGUSR1);
exit(0);
}
而我 fork(),fork(),... fork(),父进程不记得以前的 fork,就像某些东西被重置了,链接列表又重新开始了。有什么我想念的吗?
谢谢
【问题讨论】:
-
你的 !fork 应该是 !fork()。就这么简单吗?
标签: c linked-list ipc