我是 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
之间没有关系。
您需要找到其他方式来传达信息。您可以使两个进程都附加到一个共享内存对象,并让子进程更新该对象,并让父进程读取它,尽管您还必须小心竞争危险。
或者,您可以考虑使用线程,在这种情况下,两个进程使用相同的内存,尽管同步也是一个问题。
关于c++ - fork C++ 上父子之间的共享内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31562514/