进程(在我的情况下是会话负责人)如何获得控制终端?
我在我的程序中做什么:
1. fork;
2. parent -> while(1) or smth. similar;
3. child -> setsid();
exec "man ps";
我相信我不会在输出中得到任何东西。(孩子是会话负责人,因此现在它与旧 tty 无关)但我明白了,但不明白为什么。人输出。但不是交互式的。当我按下 Ctrl-z 时,当我按下 'q' 时它变成交互式的,它安静并返回到我的 prog(父级)。所以问题是:
- 请解释一开始发生了什么(为什么我必须按 ctrl-z,请阅读上文)
- 为什么 man 在那个 shell 中有一些输出?
- 在没有连接任何 tty 的情况下,人如何做到这一点(我用 ps 检查过,man 和 pager 在 TTY 列中有“?”)
- 最后:新的会话领导者如何获得控制终端。除此之外还有什么办法
open(/dev/tty)
吗?