[問題] 在不同process間使用callback function

看板C_and_CPP (C/C++)作者 (Keinohrhasen)時間14年前 (2011/12/28 18:19), 編輯推噓2(2010)
留言12則, 4人參與, 最新討論串1/3 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) C and Linux 問題(Question): 各位先進好,想請問以下情境是否能夠達成。 現有三個獨立的 process A & B & C A 向 C 註冊一個 callback function 名為 foo() B 向 C 註冊一個 callback function 名為 bar() Callback function prototype: void (*cbfn)(int a, struct my_struct *b); C 在條件1發生後會執行 foo() C 在條件2發生後會執行 bar() 不知道上述的情境是否能達成? 如果可行的話,煩請先進指點迷津。 補充說明(Supplement): 我知道 A,B 與 C 有各自的 address space, 正常來說 C 是沒辦法執行 A,B 的 function, 曾經想過利用 signal 或 IPC 機制來達成這樣的效果, 不過似乎這樣又不需要「註冊函數」這個動作, 而且傳遞參數上面也有問題, 在小弟有限知識下實在是想不出要怎麼解決, 網路上 Google 到的資訊也是同一隻 process 內的 callback (利用函數指標), 希望有先進可以幫忙解惑。先行感謝。:-) -- Zeit ist Geld = 時は金なり = Time is money -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.184.171

12/28 18:44, , 1F
只能用IPC
12/28 18:44, 1F

12/28 22:07, , 2F
CORBA 的話可以做到類似的效果,不過大概複雜程度不是
12/28 22:07, 2F

12/28 22:08, , 3F
你想處理的...
12/28 22:08, 3F

12/29 11:01, , 4F
呃,跨process不用IPC(inter-process comm.)是要用啥XD
12/29 11:01, 4F

12/29 20:21, , 5F
感謝樓上三位先進回答 :)
12/29 20:21, 5F

12/29 23:32, , 6F
keyword: RPC. and you NEED IPC one way or the other
12/29 23:32, 6F

12/29 23:34, , 7F
if you want async, use thread or w/e in callee process
12/29 23:34, 7F

12/30 11:35, , 8F
Chikei, thanks. I will google RPC for more information.
12/30 11:35, 8F

12/30 11:36, , 9F
Now I am trying to use both signal and message queue
12/30 11:36, 9F

12/30 11:37, , 10F
simultaneously, and signal is used for notification.
12/30 11:37, 10F

12/30 11:40, , 11F
This way, message retrieval becomes pseudo-async.
12/30 11:40, 11F

12/30 11:41, , 12F
Still, registering callback seems to be redundant.
12/30 11:41, 12F
文章代碼(AID): #1E-kqrOG (C_and_CPP)
文章代碼(AID): #1E-kqrOG (C_and_CPP)