[問題] 請問有可能用一個library管理 child嗎?

作者: gn00618777 (非常念舊)   2022-06-14 21:53:42
板友們晚安,打擾了.
我是在Linux C 底下寫lib,只能提供3個API,目前在設計階段
start(..): 內會 fork 出兩個 process持續運作,之後把PID紀錄在share memory就
return 了
stop(..): 內可能會kill存在share memory中的pid
get_status(...)內可能會獲得process狀態
我的預想是,process call library 的 start(),fork 出 process,理應屬於 process
的 child,但我即使在 process內用 signal(SIGHLD, handler),仍然收不到child 離開
的signal。請問是不是start()已經return了,而導致我收不到呢?
另外,有沒有可能寫個library來管理 child process ,來達到我上面3個API的行為呢?
誠心請教,謝謝。
作者: wulouise (在線上!=在電腦前)   2022-06-14 22:08:00
作者: gn00618777 (非常念舊)   2022-06-15 00:00:00
更正。我call stop()去 kill(pid, 9)外面可以收到sig只是不知道為何 child 自己 return,卻收不到謝w大
作者: LPH66 (-6.2598534e+18f)   2022-06-15 01:07:00
雖然有點不太可能, 但你是在 fork 後才註冊 SIGCHLD 的嗎?是的話這裡可能會有時間差, 註冊前子行程結束就會預設收走
作者: Schottky (順風相送)   2022-06-15 03:18:00
你為什麼要設計出這麼複雜的系統來搞自己 XDDDD這中間可以出錯的 pitfall 太多,寫出來能長期執行穩定不故障的,大概都是天外飛仙那個等級
作者: gn00618777 (非常念舊)   2022-06-15 07:00:00
我是在fork前註冊的
作者: descent (「雄辯是銀,沉默是金」)   2022-06-15 09:46:00
你這個設計真的太複雜, 會用在 thread 的環境嗎?
作者: gn00618777 (非常念舊)   2022-06-15 21:13:00
我不會用在 thread 環境,也不會 fork process執行我先設計個完整點再來和大家討論好了XD
作者: wulouise (在線上!=在電腦前)   2022-06-16 20:42:00
列好自己的use case再來說設計 不然不好討論
作者: saladim (殺拉頂)   2022-06-21 01:59:00
恩....你問題的描述跟用詞可能要在精準一點 lib管理process大概可以猜到意思但難懂 離開是指process結束還是function結束.....看不太懂

Links booklink

Contact Us: admin [ a t ] ucptt.com