[理工] [OS]-關於Fork()

看板Grad-ProbAsk作者 (XD)時間16年前 (2009/08/18 19:34), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串1/2 (看更多)
#include<pthread.h> #include<stdio.h> int value = 0; void *runner(void *param); /*the thread*/ int main(int argc, char *argv[]) { int pid; pthread_t tid; pthread_attr_t attr; pid=fork(); if(pid == 0) /*child process*/ { pthread_attr_init(&attr); pthread_creat(&tid,&attr,runner,NULL); pthread_join(tid,NULL); printf("CHILD value = %d",value); /*LINE C*/ } else if(pid > 0) { wait(NULL); printf("PARENT : value = %d",value); /*LINE P*/ } } void *runner(void *param) { value = 5; pthread_exit(0); } 求解P行跟C行的value值 答案 : P=0 , C=5 為什麼?? 能否告訴我程式大概的執行流程 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.127.208.156 ※ 編輯: yesa315 來自: 140.127.208.156 (08/18 19:36)

08/18 21:04, , 1F
fork的child process和parent process共享code block
08/18 21:04, 1F

08/18 21:05, , 2F
但data block是分開的
08/18 21:05, 2F
文章代碼(AID): #1AYf7JfA (Grad-ProbAsk)
討論串 (同標題文章)
文章代碼(AID): #1AYf7JfA (Grad-ProbAsk)