作者gn00618777 (123)
看板C_and_CPP
标题[问题] 请问有可能用一个library管理 child吗?
时间Tue Jun 14 21:53:42 2022
板友们晚安,打扰了.
我是在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的行为呢?
诚心请教,谢谢。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.224.110.19 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1655214826.A.6B3.html
2F:→ gn00618777: 更正。我call stop()去 kill(pid, 9)外面可以收到sig 06/15 00:00
3F:→ gn00618777: 只是不知道为何 child 自己 return,却收不到 06/15 00:00
4F:→ gn00618777: 谢w大 06/15 00:01
5F:推 LPH66: 虽然有点不太可能, 但你是在 fork 後才注册 SIGCHLD 的吗? 06/15 01:07
6F:→ LPH66: 是的话这里可能会有时间差, 注册前子行程结束就会预设收走 06/15 01:07
7F:推 Schottky: 你为什麽要设计出这麽复杂的系统来搞自己 XDDDD 06/15 03:18
8F:→ Schottky: 这中间可以出错的 pitfall 太多,写出来能长期执行稳定 06/15 03:32
9F:→ Schottky: 不故障的,大概都是天外飞仙那个等级 06/15 03:32
10F:→ gn00618777: 我是在fork前注册的 06/15 07:00
11F:→ descent: 你这个设计真的太复杂, 会用在 thread 的环境吗? 06/15 09:46
12F:→ gn00618777: 我不会用在 thread 环境,也不会 fork process执行 06/15 21:13
13F:→ gn00618777: 我先设计个完整点再来和大家讨论好了XD 06/15 21:14
14F:→ wulouise: 列好自己的use case再来说设计 不然不好讨论 06/16 20:42
15F:→ saladim: 恩....你问题的描述跟用词可能要在精准一点 lib管理proce 06/21 01:59
16F:→ saladim: ss大概可以猜到意思但难懂 离开是指process结束还是func 06/21 02:00
17F:→ saladim: tion结束.....看不太懂 06/21 02:00