[問題] fork (parent 和 child變數傳遞的問題)

看板C_and_CPP (C/C++)作者 (AG)時間15年前 (2010/10/09 00:57), 編輯推噓1(1010)
留言11則, 3人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) 沒辦法用一個共用變數來傳遞訊息? #include <sys/types.h> #include <stdio.h> #include <unistd.h> #include<sys/wait.h> int *p ; int value=0; int main(){ p = &value; int pid, pid1; pid = fork(); if (pid <0 ){ return 1; } else if (0 == pid){ printf ("child: %d\n", *p); *p += 1; } else{ wait(NULL) ; printf ("parent %d\n", *p); } } 想請問我沒有辦法用一個共用變數 來傳遞child和parent間的資料嗎? 我知道fork會複製一份parent的資料來做 可是我的變數 p 不是應該記錄著 value 的address嗎? 新手一問 請大家多多見諒...@@ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.251.224.160

10/09 01:02, , 1F
fork() 的 parent 與 child 是兩個完全獨立的世界
10/09 01:02, 1F

10/09 01:03, , 2F
要傳遞資料的簡單方法是使用 pipe(), 可以查查看
10/09 01:03, 2F

10/09 01:07, , 3F
好 謝謝!!
10/09 01:07, 3F

10/09 01:21, , 4F
對了,如果是要共用的話,shared memory會更適合
10/09 01:21, 4F

10/09 01:32, , 5F
可以請問share memory的話要用什麼指令嗎?
10/09 01:32, 5F

10/09 01:33, , 6F
因為child 和 parent好像會是有個別獨立的資料
10/09 01:33, 6F

10/09 01:36, , 7F
我想你google找Linux shared memory就有不少資料了
10/09 01:36, 7F

10/09 01:36, , 8F
child與parent溝通方式稱為IPC,用這個也可以找到資料
10/09 01:36, 8F

10/09 01:36, , 9F
IPC = Interprocess communication
10/09 01:36, 9F

10/09 01:54, , 10F
mmap,pipe,shm_get/shm_at ..
10/09 01:54, 10F

10/09 08:50, , 11F
謝謝大家的建議!!
10/09 08:50, 11F
文章代碼(AID): #1ChqrZ6B (C_and_CPP)
文章代碼(AID): #1ChqrZ6B (C_and_CPP)