在fork子中,如果我們修改一個全局變量,它將不會在主程序中被修改。如何在進程fork()之間共享內存?
有沒有辦法改變子分叉全局變量?
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int glob_var;
main (int ac, char **av)
{
int pid;
glob_var = 1;
if ((pid = fork()) == 0) {
/* child */
glob_var = 5;
}
else {
/* Error */
perror ("fork");
exit (1);
}
int status;
while (wait(&status) != pid) {
}
printf("%d\n",glob_var); // this will display 1 and not 5.
}
可能重複的[如何在C中使用Linux共享內存](http://stackoverflow.com/questions/5656530/how-to-use-shared-memory-with-linux-in-c) – alk