用mmap执行可以多次使用?

时间:2015-05-16 09:34:15

标签: c multiprocessing signals mmap

我有一个使用mmap for ipc的应用程序。我可以多次运行此应用程序吗?会有副作用吗?

我的应用场景: 我的应用程序分离了一个子进程,它的工作是总是随机杀死父进程,但它应该以受控方式执行此操作,例如在父进程中设置一个变量来指示子进程杀死父进程(这里是mmap) 。父进程有一个信号处理程序,它可以再次恢复应用程序,子进程终止它继续的父进程... 谁能帮我?感谢adavnce

1 个答案:

答案 0 :(得分:0)

多次运行应用程序是否会产生副作用取决于您如何实现它。请看this answer。它包含许多有用的信息。例如:

  如果你有多个进程从同一个文件以只读方式访问数据,那么

mmap很棒[...]

这意味着:如果要为多个父/子对使用相同的共享内存,则需要同步对该共享内存的访问。请查看this Q&A如何做到这一点。当然,您必须确保每个父/子对在共享内存中使用自己的变量。

另一种选择是为每个父/子对使用单独的共享内存段。例如,您可以通过使父进程的进程ID成为共享内存文件名的一部分来执行此操作。然后,当您分叉子进程时,将进程ID(或共享内存文件名)传递给子进程,以便父进程和子进程知道要使用哪个共享内存以便相互通信。