如何让子进程修改链表C



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

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-conactionClient。我用来修改链接列表的函数是有效的,但当我调用中的信号处理程序时。。。

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

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

感谢

嗯?

您似乎忽略了这样一个事实,即每个进程都在自己的私有内存空间中运行。孩子不能修改父母记忆中的任何内容。这是真的,除非你的操作系统足够基本,不支持内存保护,在这种情况下,你必须非常清楚地说出来。

您可能应该研究线程,它们是共享内存空间中的并行执行路径。

相关内容

  • 没有找到相关文章

最新更新