[问题] 请问有可能用一个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