Session 控制终端&;新的会议
进程(在我的例子中是会话负责人)如何获得控制终端 我在我的程序中所做的:Session 控制终端&;新的会议,session,unix,terminal,tty,Session,Unix,Terminal,Tty,进程(在我的例子中是会话负责人)如何获得控制终端 我在我的程序中所做的: 1. fork; 2. parent -> while(1) or smth. similar; 3. child -> setsid(); exec "man ps"; 我相信我在输出中什么也得不到。(child是一个会议主持人,因此现在它与老tty没有任何关系)但我明白了,也不明白为什么。人的输出。但它不是互动的。当我按下Ctrl-z键时,当我按下“q”键时,它将退出并返回到我
1. fork;
2. parent -> while(1) or smth. similar;
3. child -> setsid();
exec "man ps";
我相信我在输出中什么也得不到。(child是一个会议主持人,因此现在它与老tty没有任何关系)但我明白了,也不明白为什么。人的输出。但它不是互动的。当我按下Ctrl-z键时,当我按下“q”键时,它将退出并返回到我的程序(父级)。因此,问题是:
打开(/dev/tty)
,还有其他方法吗问题1。to 3.:子进程保持对stdin、stdout等的访问,即使在setsid()之后。您需要显式地关闭它们(或者使用例如
open(“/dev/null”,O_RDWR);
重新打开)
问题4:
当没有控制终端的会话引导程序打开一个终端设备文件,并且打开时标志O_NOCTTY清除时,如果终端尚未分配给某个会话,则该终端将成为分配给会话引导程序的控制终端