[問題] process 之間傳遞資料

看板C_and_CPP作者 (林佳)時間11年前 (2014/04/02 21:23), 編輯推噓8(8013)
留言21則, 9人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) codeblock 問題(Question): 不同process之間要如何傳遞資料(vector) 補充說明(Supplement): 目前要做到的功能是 process A 將資料丟給多個 process 處理之後回傳給 A 目前有兩個想法 但不知道可不可行 1. 用exec() 呼叫 .exe 來處理資料回傳 但這個方法有辦法傳送vector 資料過去嗎? 目前看到是傳 cmd arg 2. 用fork() 去開啟多個child process 然後用pipe() 去傳遞資料?? 傳遞資料這裡還看不太懂 還有 fork() 好像會執行到太多重複的code 請問大家有更好的方法來做到我的訴求嗎? 或是我上面有哪裡說錯了 可以幫我補正一下嗎? 謝謝大家 -- ◢◤ ███◣ /// /// ███ ███ ███ ███ █▆▆ █▆▆ ██████◤ ψjimbox -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.250.53.128 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1396445032.A.98C.html

04/02 22:00, , 1F
IPC 資料型態盡可能不要用 class, 換 compiler 時易出包..
04/02 22:00, 1F

04/02 22:44, , 2F
用socket
04/02 22:44, 2F

04/02 23:45, , 3F

04/02 23:46, , 4F
這個方案如何? Windows和Linux都可用, 也可以互通
04/02 23:46, 4F

04/03 09:14, , 5F
是指用share memory來共用資料?
04/03 09:14, 5F

04/03 09:54, , 6F
named pipe
04/03 09:54, 6F

04/03 14:46, , 7F
提到.exe又提到fork,請問你是用cygwin嗎?OS是?還是要跨?
04/03 14:46, 7F

04/03 14:57, , 8F
樓上可以 google: codeblock wiki 和 devc wiki 了解一下.
04/03 14:57, 8F

04/03 15:05, , 9F
是說我嗎:) 我duck了,還是不確定原PO的OS,是說除了cygwin
04/03 15:05, 9F

04/03 15:05, , 10F
以外有win版本的fork嗎?順便請教一下。
04/03 15:05, 10F

04/03 15:14, , 11F
推一樓,不管什麼IPC,大概都不會出現sizeof(std::vector)
04/03 15:14, 11F

04/03 15:59, , 12F
OS : Win7 自己也找了一下 fork() 好像要用cygwin/ unix
04/03 15:59, 12F

04/03 17:49, , 13F
1要轉字串,且args限制長度,且有安全問題;既是win,2就不提...
04/03 17:49, 13F

04/03 17:52, , 14F
幫自己和你查了http://ppt.cc/iBtd似乎是環境與偏好選擇問題
04/03 17:52, 14F

04/03 17:54, , 15F
http://ppt.cc/ttLP簡單;SHM(FileMap)快;socket順便學網路
04/03 17:54, 15F

04/04 14:54, , 16F
又查到shm手法在多核心架構下可能會較慢,因為記憶體必須在
04/04 14:54, 16F

04/04 14:57, , 17F
不同核心的cache間搬移拷貝維持相依性。隨著核心數量增加問
04/04 14:57, 17F

04/04 14:58, , 18F
題可能變嚴重<-OS Concepts第九版所說。僅供參考。
04/04 14:58, 18F

04/04 17:45, , 19F
謝謝樓上大大 我應該採用socket 感覺以後也用的到
04/04 17:45, 19F

04/07 12:51, , 20F
對不起, 我眼殘了, 請忽略我前面的推文.
04/07 12:51, 20F

04/13 19:45, , 21F
boost ipc 試試 ?
04/13 19:45, 21F
文章代碼(AID): #1JF0zecC (C_and_CPP)