[英]Shared memory between parent and child on fork 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
並非如此,事實並非如此。 叉子之后的過程中不同的內存空間運行,還有的沒有關系var
在家長和var
的孩子。
您需要找到其他傳達信息的方式。 您可以使兩個進程都附加到共享內存對象,並讓子進程對其進行更新,並讓其父進程對其進行讀取,盡管您還必須注意種族危險。
或者,您可以考慮使用線程,在這種情況下,兩個進程都使用相同的內存,盡管同步仍然是一個問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.