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

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

如何检测何时有人在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 );if (!(pfd.revents & POLLHUP)){    }

如果阅读器消失了,

POLLHUP
将再次设置。

在您的情况下,您甚至可能甚至不需要记住从一个循环到下一个循环,给定的pty是否具有读取器-
只需阻塞

read()
数据源,然后在数据可用时,同时同步
poll()
所有主tty并发送数据发送到任何未
POLLHUP
设置的位置。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5018992.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-14
下一篇2022-11-15

发表评论

登录后才能评论

评论列表(0条)

    保存