Re: [理工] [OS] 父子process的共享變數

作者: chadcoco1222 (ha)   2015-06-15 12:41:32
※ 引述《gn00399745 (Michael)》之銘言:
: int value = 0;
: void *runner(void *param);
: int main(in argc, char *argv[])
: {
: int pid;
: phread_t tid;
: pthread_arrt_t attr;
: pid = fork()
: if(pid == 0){//child
: pthread_attr_init(&attr);
: pthread_create(&tid,&attr,runner,NULL);
: pthread_join(tid,NULL);
: printf("%d\n",value); //line C
: }else if(pid>0){ //parent
: wait(NULL);
: printf("%d\n",value);//line P
: }
: }
: void *runner(void *param)
: {
: value = 5;
: pthread_exit(0);
: }
:
作者: pathy (pathy)   2015-06-15 14:54:00
你說的是copy on write
作者: chadcoco1222 (ha)   2015-06-15 20:17:00
所以這樣裡解是錯的嗎????
作者: fightforlive (學歷無用論是屁)   2015-06-16 08:03:00
child和parent基本不會共用變數,除非你用共用記憶體才會使用相同變數
作者: chadcoco1222 (ha)   2015-06-16 10:38:00
所以是兩個獨立的process嗎http://lionrex.pixnet.net/blog/post/56646996-%5Bos%5D-fork()-%E5%92%8C-vfork()-%5Bcopy-on-write%5D
作者: pathy (pathy)   2015-06-16 11:58:00
c大說的是基本thread,f大說的是copy on write更正, c大內文說的是copy, f大推文說的是基本thread

Links booklink

Contact Us: admin [ a t ] ucptt.com