Re: [理工] [OS] fork()
※ 引述《mqazz1 (無法顯示)》之銘言:
: #include <stdio.h>
: #include <unistd.h>
: void func(int *input)
: {
: (*input)++;
: }
: int main()
: {
: pit_t pid;
: int k;
: k=3;
: pid = fork();
: if(pid<0)
fork失敗跑這裡
: {
: func(&k);
: printf("k=%d ", k);
: exit(-1);
: }
: else if(pid==0)
child 跑這裡
: {
: func(&k);
: printf("k=%d ", k);
: }
: else
父親跑這裡
: {
: wait(NULL);
→
07/29 21:29,
07/29 21:29
→
07/29 21:29,
07/29 21:29
: func(&k);
: printf("k=%d ", k);
: exit(0);
: }
: }
: (A) the output k of the parent process is 4
: (B) the output k of the child process is 4
: (C) the last output of k is 4
: 請問這段程式是怎麼跑的?
: 謝謝
fork共用code section
但不共用data section
所以父親的k和兒子的k不共用
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.105.81.102
推
07/29 21:25, , 1F
07/29 21:25, 1F
→
07/29 21:29, , 2F
07/29 21:29, 2F
→
07/29 21:29, , 3F
07/29 21:29, 3F
※ 編輯: bjk 來自: 59.105.81.102 (07/29 21:30)
推
07/29 23:48, , 4F
07/29 23:48, 4F
→
07/29 23:48, , 5F
07/29 23:48, 5F
推
07/31 10:53, , 6F
07/31 10:53, 6F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 3 篇):