如何让子进程修改链接列表C.

时间:2012-02-15 08:54:02

标签: c linked-list ipc

您好我有一个程序需要子进程来修改父进程跟踪的链接列表。基本上在父进程中我有一个信号处理程序,如..

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是修改函数。然后我有一个全局链表,父进程包含名为struct conectionClient。我用来修改链接列表的函数可以正常工作,但是当我在...中调用信号处理程序时

if(!fork){
raise(SIGUSR1);
exit(0);
} 

而我fork(),fork(),... fork(),父进程不记得以前的forks就像重置了一样,链接列表重新开始。有什么东西我不见了吗?

由于

1 个答案:

答案 0 :(得分:2)

咦?

您似乎错过了每个进程都在其自己的私有内存空间中运行的事实。孩子无法修改父母记忆中的任何内容。除非您的操作系统基本不足以支持内存保护,否则这是真的。在这种情况下,您必须非常清楚地说明。

您应该查看线程,它们是共享内存空间中的并行执行路径。