我有一个计数变量,应该由我派生的几个进程进行计数,并由母进程使用/读取。
我尝试在母进程的main()函数中创建一个指针,并在派生的子进程中递增该指针。但是这样做不起作用!每个子进程似乎都有自己的副本,即使在每个进程中地址相同。
最好的方法是什么?
指针始终位于同一进程中。 它相对于进程的基地址是私有的。 在任何操作系统中都有不同类型的IPC机制可用。您可以选择Windows消息传递、共享内存、套接字、管道等。根据您的要求和数据大小选择其中一种。另一种机制是使用可用的虚拟内存API将数据写入目标进程,并使用相应的指针通知该进程。
一种简单但有限的进程间通信(IPC)选项,适用于共享计数的是“共享数据段”。在Windows上,可以使用#pragma data_seg
指令来实现。
请参阅此文章以获取示例。