守护进程时进行双叉的原因是为了防止守护进程获取控制 tty(创建守护程序时执行双叉的原因是什么?)
获取控制 tty 的程序有哪些示例,它们为什么需要这样做?
我的问题是由这个问题引起的:如何监控子进程输出和退出状态而不会对子进程产生不利影响?
守护进程时进行双叉的原因是为了防止守护进程获取控制 tty(创建守护程序时执行双叉的原因是什么?)
获取控制 tty 的程序有哪些示例,它们为什么需要这样做?
我的问题是由这个问题引起的:如何监控子进程输出和退出状态而不会对子进程产生不利影响?
有意获取控制 tty的程序示例是getty
(处理设置“真实”tty 线路的程序,如控制台、RS-232 串行线路和用作登录终端的调制解调器)和sshd
(分叉并获取一个伪终端)。
然而,在双叉的原因的背景下,强调意外(无意)获得控制 tty 的程序更为重要,因为根据您引用的答案,这主要是双叉要防范的。因此,无意获取控制 tty的程序示例是:
setsid()
,因此是会话负责人;O_NOCTTY
换句话说:由于程序一般不会O_NOCTTY
在每次打开时都使用,并且在打开东西时一般不打算获取控制终端,因此使用双叉方法防止获取发生是非常有用的。