作者chengcti (卡馬請出來面對!!)
看板C_and_CPP
標題Re: [問題] 在不同process間使用callback function
時間Thu Dec 29 17:43:00 2011
1. IPC / mailslot, pipe, message.
not easy
2. file share (a simple method)
A, B always check a file every n secs.
When C writes a flag to file.
The A & B read it, and call his function.
※ 引述《sawang (Keinohrhasen)》之銘言:
: 開發平台(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 (利用函數指標),
: 希望有先進可以幫忙解惑。先行感謝。:-)
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.224.174
推 sawang:感謝chengcti,我有想過polling這個方法,不過這樣就失去 12/29 20:25
→ sawang:「註冊」的意義了,原意是希望A,B註冊完後就可以做自己的事 12/29 20:26
→ sawang:另外IPC的機制除了signal是asynchronous以外,其他都不是 12/29 20:28
→ sawang:以message而言,A,B還是要定時去做msgrcv的動作 12/29 20:29
→ chengcti:那只有 COM 了. COM本質論這本書用資料結構寫COM 12/30 00:20