我是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
答案 0 :(得分:2)
不喜欢它不是。在fork之后,进程在不同的内存空间中运行,父进程中的var
与子进程中的var
之间没有任何关系。
您需要找到一些其他方式来传达信息。您可以将两个进程附加到共享内存对象,并让子进程更新,并让父进程读取它,尽管您还必须注意种族危险。
或者,您可以考虑使用线程,在这种情况下,两个进程都使用相同的内存,但同步也是一个问题。