fork() を使用しているときに、書き込もうとしているアプリケーション全体で整数ポインターの値を更新しようとしています。理解に苦しんでいます。フォーク中に何が起こっているのでしょう。メインと同じ変数を共有していませんか? フォークで値が変更されているときに、メインの値を更新するにはどうすればよいですか。これは、私が何をしようとしているのかを理解するために作成した例です。
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
void changeValue(int *value)
{
*value = *value * 2;
printf("value in changeValue(): %d\n", *value);
}
main ()
{
int pid;
int *value = new int;
*value = 10;
printf("value in main: %d\n", *value);
pid = fork();
if (pid == 0) {
changeValue(value);
_exit(0);
}
sleep(2);
// I want value = 20 here, but value stays = 10
printf("value in main after fork(): %d\n", *value);
}