c++分支上父级和子级之间的共享内存



我是c++新手。是否有可能在fork()中声明父进程和子进程之间共享使用的变量?

#include <iostream>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
using namespace std;
int var;
int main(int argc, char * argv[])
{       
    pid_t child_pid;
    int status;
    var = 3;
    if ((child_pid = fork()) < 0) {
        perror("Error (fork failure)");
    }   
    if (child_pid == 0) {
      var = 10;
      cout << "CHILD ASSIGNED var=" << var << endl;
    }    
    else {        
        wait(NULL);
        cout << "PARENT var=" << var << endl;
    }                        
}

我得到的当前结果是:

CHILD ASSIGNED var=10
PARENT var=3

我想要的是

PARENT var=10

不是那样的。在fork之后,进程运行在不同的内存空间中,父进程的var和子进程的var之间没有关系。

你需要找到一些其他的方式来传达信息。你可以让两个进程都连接到一个共享内存对象,让子进程更新它,让父进程读取它,尽管你也必须小心竞争风险。

或者,您可以考虑使用线程,在这种情况下,两个进程使用相同的内存,尽管同步也是一个问题。

最新更新