推 mimi0213:wait() 12/23 22:32
→ shooter555:wait()是用來等待fork所產生的subprocess而已 不是嗎? 12/25 14:47
→ buganini:自己寫程式把AB包起來 P跟AB的殼做IPC 12/25 14:55
→ buganini:其中最難包的應該是B 如果他不只是用來執行的話.. 12/25 14:56
→ buganini:或是說如果你能取得B的pid的話 就可以直接用kernel 12/25 14:58
→ buganini:機制來做 12/25 14:58
→ shooter555:可是我無法取得A, B的source code 所以應該辦法把兩隻 12/26 09:48
→ shooter555:單獨的執行檔包起來吧 12/26 09:48
→ shooter555: 沒 12/26 09:48
→ shooter555:我也想過直接取得B的Pid, 可是好像唯一辦法只能透過ps 12/26 09:52
→ shooter555:指令, 然後grep name去找到它, 不過如果同時存在很多的 12/26 09:53
→ shooter555:B的話, 就沒辦法了... 12/26 09:54
→ buganini:所謂包起來就是不需要source code啊 自己用一個 12/26 11:04
→ buganini:launcher去代替真正的B 這樣這個程式就會知道B的pid了 12/26 11:07
→ buganini:簡單說就是你要在A/B之間塞自己的一層 12/26 11:08
→ shooter555:這個方法好像可行喔!!意思是說我寫一隻假的Launcher來 12/26 11:39
→ shooter555:騙A, 然後取得所有的參數以後, 在用這隻launcher去叫起 12/26 11:40
→ shooter555:原本的B, 同時取得pid, 只是不知要怎樣將這pid傳回"P", 12/26 11:41
→ shooter555:我先試試看這方法好了, 感謝大大指點!! 12/26 11:44
→ shooter555:結果...還是無法讓P程式與那隻launcher做資料溝通... 12/28 14:15
→ buganini:兩個程式都自己寫的就可以找其他手段做IPC啦 12/28 17:46
→ buganini:在P開好pipe 把fd藏在環境變數 launcher就知道怎麼傳了 12/28 17:48
→ shooter555:感謝大大!!我有找到一個方法了, 開socket來傳訊息, 先 12/30 13:15
→ shooter555:開一個socket manager來管理所有的連結P跟Launcher的 12/30 13:16
→ shooter555:socket, 然後利用這個manager來媒合P跟Launcher(因為P 12/30 13:18
→ shooter555:跟Launcher or B都是multiple), 這樣就能讓兩個溝通了 12/30 13:20
→ shooter555:P1 <一> launcher1, p2 <一> launcher2 ...... 12/30 13:21