您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何检测何时有人在Linux中打开pty(伪终端)的从属端?

如何检测何时有人在Linux中打开pty(伪终端)的从属端?

您找不到此原因的原因是,没有专门允许它的文档化接口。但是,有一个技巧可以使您做到这一点。在打开伪终端主机(假定为文件描述符ptm)之后,打开并立即关闭从机端:

close(open(ptsname(ptm), O_RDWR | O_NOCTTY));

这将在tty主机上设置HUP标志。现在,您可以定期轮询HUP标志poll()(例如,每当数据来自数据源时):

struct pollfd pfd = { .fd = ptm, .events = POLLHUP };
poll(&pfd, 1, 10 /* or other small timeout */);

if (!(pfd.revents & POLLHUP))
{
    /* There is Now a reader on the slave side */
}

如果阅读器消失了,POLLHUP将再次设置。

在您的情况下,您甚至可能甚至不需要记住从一个循环到下一个循环,给定的pty是否具有读取器- 只需阻塞read()数据源,然后在数据可用时,同时同步poll()所有主tty并发送数据发送到任何未POLLHUP设置的位置。

其他 2022/1/1 18:19:02 有481人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶