【发布时间】:2021-04-19 05:56:20
【问题描述】:
在 linux 上,为了能够控制从我的主进程分叉出来的进程的生命周期,我通过调用 setsid() 使主进程成为会话和组长。然后看起来我需要让主进程为进程组创建一个控制终端,然后,一旦主进程终止,进程组中的所有其他进程都会收到一个 SIGHUP。我尝试为文件系统上的常规文件调用open(),但ioctl() 拒绝接受这个带有“不适当文件描述符”的fd。 posix_openpt() 是我应该改用的吗?手册页说它将创建一个伪终端并为其返回一个文件描述符。我是否需要在posix_openpt() 之后拨打ioctl(fd, TIOCSCTTY, 0),或者不使用O_NOCTTY 是我真正需要的吗?谢谢!
【问题讨论】:
-
我尝试 not 为 fd 调用 ioctl() 并解析 stat 文件,我看到 ctty 设备 ID 仍然为 0。所以,当在 open() 的手册页中时说'O_NOCTTY',这是否意味着我需要始终进行ioctl()调用,然后无论是否使用'O_NOCCTTY',终端都会成为控制终端?
标签: linux process file-descriptor ioctl pty