开发者社区> 问答> 正文

linux fork 父子进程共享指针

int main (void)
{
  int *p = malloc(sizeof(int));
  *p = 0;
  printf("start main()\n");
  int pid = fork();
   
  if (pid == 0) {
    printf("i am child, my pid is %d\n", getpid());
    printf("%d\n", p); 
    *p += 5;
  } else {
    printf("i am parent, my pid is %d\n", getpid());
    printf("%d\n", p); 
    *p += 2;
  }
  printf("%d\n", *p); 
  return 0;
}

展开
收起
a123456678 2016-06-13 11:09:33 2470 0
1 条回答
写回答
取消 提交回答
  • 指针地址是偏移量. 不是绝对地址.

    各种进程当中的偏移量相同, 指向不同地址.

    fork对进程所有的地址空间全部进行了复制

    要共享数据, 必须通过操作系统的 进程间通信方法, 共享内存.

    2019-07-17 19:35:23
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载
ECS运维指南 之 Linux系统诊断 立即下载