经典套娃。
场景这样的使用 symfony process 启动了一个 php 进程。
symfony 启动使用的命令是:
$commandline = '{ ('.$commandline.') <&3 3<&- 3>/dev/null & } 3<&0;';
$commandline .= 'pid=$!; echo $pid >&3; wait $pid 2>/dev/null; code=$?; echo $code >&3; exit $code'
启动成功后进程树类似:(假设执行的是 php -r "sleep(10);")
|---master |-----|---(PID:100) sh -c php -r "sleep(10);" |-----------|---(PID:101) php -r "sleep(10);"
当在 master 中执行 posix_kill(101, 15) sigterm
后。sh 立刻退出了。剩余一个 php -r "sleep(10);" 还在跑。
通过这种形式启动的进程应该怎么“优雅”的退出呢?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.