linux fork 进程后 主进程的全局变量

时间:2022-05-07 11:07:33

fork一个进程后,复制出来的task_struct结构与系统的堆栈空间是父进程独立的,但其他资源却是与父进程共享的,比如文件指针,socket描述符等

不同的进程使用不同的地址空间,子进程被创建后,父进程的全局变量,静态变量复制到子进程的地址空间中,这些变量将相互独立

 #include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>
#include <unistd.h> int count = ; int main(){
if(fork() == ){
count--;
printf("child fork:counter = %d\n",count);
exit();
}
else{
sleep();
wait(NULL);
printf("counter = %d\n",++count);
}
exit();
}

输出结果:

  child fork:counter = 0
  counter = 2