2

守护进程时进行双叉的原因是为了防止守护进程获取控制 tty(创建守护程序时执行双叉的原因是什么?

获取控制 tty 的程序有哪些示例,它们为什么需要这样做?

我的问题是由这个问题引起的:如何监控子进程输出和退出状态而不会对子进程产生不利影响?

4

1 回答 1

2

有意获取控制 tty的程序示例是getty(处理设置“真实”tty 线路的程序,如控制台、RS-232 串行线路和用作登录终端的调制解调器)和sshd(分叉并获取一个伪终端)。

然而,在双叉的原因的背景下,强调意外(无意)获得控制 tty 的程序更为重要,因为根据您引用的答案,这主要是双叉要防范的。因此,无意获取控制 tty的程序示例是:

  • 还没有控制 tty(通常是守护进程);
  • 不会双叉但会调用setsid(),因此是会话负责人;
  • 碰巧打开一个 tty 没有O_NOCTTY

换句话说:由于程序一般不会O_NOCTTY在每次打开时都使用,并且在打开东西时一般不打算获取控制终端,因此使用双叉方法防止获取发生是非常有用的。

于 2013-04-29T01:55:51.203 回答