我已经阅读了glibc
手册中关于作业控制的章节,但我想知道当 shell 终止时如何处理剩余的作业。
我想以下步骤(遵循 posix 处理孤立进程组的约定,前两个步骤似乎很明显):
- 使用 shell 的 sid 向作业发送 HUP 信号
- 使用 shell 的 sid 向停止的作业发送 CONTINUE 信号
- 释放分配给作业数据结构的资源
我的问题是,如果工作继续存在怎么办?
我认为有机会更改他们的会话 ID 以释放 sid 并解除进程组与终端的关联(不确定这是否有意义)
我应该怎么做ioctl(STDIN_FILENO, TIOCSCTTY)
才能使会话进程失去控制终端并发送信号?
该怎么办tty
?我应该启动登录并将其设置为 tty 的新控制终端进程组吗?
我仍然很困惑,我们将不胜感激。