@
wheeler 这样的话就要这么做:
1. 启动 main process
2. fork 业务 进程 传递个环境变量或者是指定参数 main process 记录个 pid 或者 process 对象
3. main process 收到信号 再 fork 个进程,用 reuseport 监听(不用传递 fd 了),然后调用 process.signal 给老进程,覆盖全局的 process 对象为新启动的对象
这样对于 systemd 来说只能是 type=simple
是吧?类似 laravel 的 queue:listen ,自己不停的调 queue:work (本质上是两个命令)
写成服务按传递不同参数的方案就是 xxx daemon 和 xxx work 用 xxx daemon 就是个 foreground manager 。它去管理 xxx work 的启停。也可以直接调用 xxx work ,收到信号就直接退
按环境变量的做法就完全由 main process 管(ENV=ENV xxx 也太中二了)
总的来说也是个办法。但是纯学习向来说还是想知道有没有什么方法可以做到让子进程在父进程退出后能直接接管父进程的 stdin/stdout/stderr...