系统基建线(agent-139): svcd subreaper加固 + meow_sysui总监 + 启动链

- svcd: 审计确认现网已子进程化(fork+execv+setpgid+waitpid+SIGCHLD+set_cloexec,无system()); 增量 prctl(PR_SET_CHILD_SUBREAPER) 代收孤儿孙进程 → fb2d608b
- meow_sysui(新增): 系统进程总监, 仿svcd成熟模式(信号自管道/poll/双探测kill/waitpid/subreaper/状态机), 监护自己fork+exec进程, 按sysui.d/<name>.conf逐条拉起, 无级联/有限次兜底/主循环绝不exit/空配置空转 → 173013cc
- 启动链 S70meow_sysui → S89meow_svcd → S90meow_bootmenu; svcd拉起权判归(sysui在→交监管,不在→回退现网重挂循环)
- 宿主集成测试过(常崩/稳定隔离/无级联/subreaper收尸/端到端); meow_ui.a未动
- 需加到固件打包(build_fw_apps_m267.sh): sysui→/usr/bin/meow_sysui, svcd覆盖(fb2d608b), S70+S89; 校验 svcd 762e84d0→fb2d608b, 新增 sysui 173013cc
This commit is contained in:
MeowOS committed 2026-08-30 19:07:47 +08:00
1 parent c4e648be0e
commit 2a6c4e97c5
9 files changed
+1391 -8

No files matched your search

+6
View File
@@ -66,6 +66,7 @@
#include <sys/wait.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <sys/prctl.h>
#include <poll.h>
/* ---- 默认路径 / 常量 ---- */
@@ -1143,6 +1144,11 @@ static void shutdown_all(void)
static int start_daemon(void)
{
if (setup_signals() != 0) return 1;
/* 设为子进程回收者:被监管服务若派生出孙进程,在服务(直接子进程)退出后
* 由 svcd 收尸而非 reparent 到 init,强化「服务崩溃隔离(僵死/孤儿)」一环。
* 失败不致命:仅记录并继续。 */
if (prctl(PR_SET_CHILD_SUBREAPER, 1) != 0)
svcd_log("PR_SET_CHILD_SUBREAPER failed: %s (continue)", strerror(errno));
if (setup_socket() != 0) return 1;
write_pidfile();