簡體   English   中英

分支C ++上父級和子級之間的共享內存

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM