mmap 的可执行文件可以多次使用吗?
Posted
技术标签:
【中文标题】mmap 的可执行文件可以多次使用吗?【英文标题】:executable with mmap can use for multiple times? 【发布时间】:2015-05-16 09:34:15 【问题描述】:我有一个将 mmap 用于 ipc 的应用程序。我可以多次运行此应用程序吗?会有副作用吗?
我的应用场景: 我的应用程序派生了一个子进程,其工作是始终随机终止父进程,但它应该以受控方式执行此操作,例如在父进程中设置一个变量,指示子进程终止父进程(这里是 mmap) .父进程有一个信号处理程序,它可以再次恢复应用程序,子进程杀死它继续的父进程...... 谁能帮我?提前感谢
【问题讨论】:
【参考方案1】:多次运行您的应用程序是否会产生副作用取决于您如何实现它。请查看this answer。它包含很多有用的信息。例如:
如果您有多个进程以只读方式从同一个文件访问数据,mmap 非常棒 [...]
这意味着:如果您想为多个父/子对使用相同的共享内存,那么您需要同步对该共享内存的访问。请查看this Q&A 了解如何执行此操作。当然,您必须确保每个父/子对在共享内存中使用自己的变量。
另一种选择是为每个父/子对使用单独的共享内存段。例如,您可以通过将父进程的进程 ID 作为共享内存文件名的一部分来做到这一点。然后,当您 fork 子进程时,您将进程 ID(或共享内存文件名)传递给子进程,以便父子进程知道使用哪个共享内存来相互通信。
【讨论】:
以上是关于mmap 的可执行文件可以多次使用吗?的主要内容,如果未能解决你的问题,请参考以下文章