我是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
之间没有关系。
你需要找到一些其他的方式来传达信息。你可以让两个进程都连接到一个共享内存对象,让子进程更新它,让父进程读取它,尽管你也必须小心竞争风险。
或者,您可以考虑使用线程,在这种情况下,两个进程使用相同的内存,尽管同步也是一个问题。