gpt4 book ai didi

c - 在 Linux 上跨进程共享数据

转载 作者:太空狗 更新时间:2023-10-29 15:22:44 29 4
gpt4 key购买 nike

在我的应用程序中,我有一个进程派生出一个子进程,比如 child1,这个子进程在磁盘上写入一个巨大的二进制文件并退出。父进程然后 fork 出另一个子进程 child2,该子进程读取这个巨大的文件以进行进一步处理。

文件转储和重新加载使我的应用程序变慢,我正在考虑可能的情况完全避免磁盘 I/O 的方法。我确定的可能方法是 ram-disk 或 tmpfs。我可以在我的应用程序中以某种方式实现 ram-disk 或 tmpfs 吗?或者有没有其他的我可以通过这种方式完全避免磁盘 I/O 并可靠地跨进程发送数据。

最佳答案

在 fork 之前创建一个匿名共享内存区域,然后所有子进程都可以在 fork 之后使用它:

char *shared = mmap(0,size,PROT_READ|PROT_WRITE,MAP_SHARED|MAP_ANONYMOUS,-1,0);

请注意,共享内存时需要一些同步机制。实现此目的的一种方法是将互斥量或信号量放入共享内存区域。

关于c - 在 Linux 上跨进程共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7107305/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com