为什么子进程在我重新澄清后只保留旧版本的变量?

问题描述 投票:0回答:1

为什么子进程在我重新澄清变量(同名)后只保留旧版本的变量?

嗨,我只是尝试运行以下代码

#include <iostream>
#include <unistd.h>
using namespace std;
int main() {
    int a = 3;
    for (int i = 0; i < 3; ++i) {
        cout << getpid() << " " << a << endl;
        int a = 0;
        if (fork() == 0) {
            continue;
        }
        break;
    }
    wait(0);
    exit(0);
}

输出是

11470 3
11471 3
11472 3

有人知道为什么输出不为0吗?

c++ c process fork
1个回答
0
投票

您的代码声明了一个 new 变量

a
。要为现有变量分配新值,请执行以下操作:

  // int a = 0;  << don't do that
  a = 0;
© www.soinside.com 2019 - 2024. All rights reserved.