什么程序获得控制权?

时间:2013-04-28 19:40:31

标签: unix process daemon tty

守护进程时进行双分叉的原因是为了防止守护进程获取控制tty(What is the reason for performing a double fork when creating a daemon?

获取控制权的程序有哪些例子,为什么需要这样做?

我的问题是由这个问题引起的:How to monitor child process output and exit status without adversely affecting child?

1 个答案:

答案 0 :(得分:2)

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

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

  • 还没有控制tty(通常是守护进程);
  • 不是双叉,而是调用setsid(),因此是会话领导者;
  • 恰好在没有O_NOCTTY
  • 的情况下打开tty

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