我正在尝试向 django 开发服务器发送信号以终止父进程和子进程。
$ python manage.py runserver
Validating models...
0 errors found
Django version 1.4.1, using settings 'myproject.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
$ ps axf
26077 pts/12 Ss 0:00 \_ -bash
4189 pts/12 S+ 0:00 | \_ python manage.py runserver
4194 pts/12 Sl+ 0:00 | \_ /myproject/.virtualenv/bin/python manage.py runserver
$ kill -s SIGINT 4189
$ ps axf
4194 pts/12 Sl 0:00 /sh/myproject/.virtualenv/bin/python manage.py runserver
我的理解是 SIGINT 应该模拟在终端中按 Ctrl-C,但请注意 SIGINT 会终止父级 4189,而不是子级 4194。SIGKILL、SIGTERM、SIGSTOP 的行为相同。从终端使用 Ctrl-C 会按预期杀死两者。
有没有办法在不知道孩子 PID 的情况下以杀死孩子的方式终止父母?