首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭PTY后可以重用PTY的从属端吗?

关闭PTY后可以重用PTY的从属端吗?
EN

Unix & Linux用户
提问于 2016-06-20 08:14:23
回答 2查看 1.9K关注 0票数 5

在使用从端(open()read()write()close())后,主read()完成并返回EIO错误。但我希望能够在不中断主fd的情况下多次使用open()/close()从端。

在奴隶的close()之后,有可能保持两端有效吗?当从端关闭时,我如何保持我的“主”程序运行?我应该重新运行到整个grantpt(); unlockpt(); ptsname();序列吗?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2016-06-20 08:27:16

短:不

长:伪终端从连接是连接的一端,就像管道一样.这两种方式都是数据通过内核在用户进程之间来回传递的方式。

一旦一端关闭,您将失去连接。POSIX中的ptsname描述说:

如果失败,ptsname()将返回一个空指针。如果fildes是无效的文件描述符,或者文件系统中不存在从设备名称,则可能发生这种情况。

一旦关闭了文件描述符,它就无效。

如果您想要重用一个连接,您可以做一些解决办法,例如将打开的从文件描述符传递给新创建的进程,例如从服务器应用程序中写入该应用程序来管理从文件描述符。

进一步读:

  • 7.2伪终点站 (文本终端操作)
  • 关闭-关闭文件描述符 (POSIX)
  • 赠款-授予从伪终端设备的访问权限. (POSIX)
  • 管道-创建进程间通道 (POSIX)
  • ptsname-获取从伪终端设备的名称 (POSIX)
  • 解锁-解锁伪终端主/从对 (POSIX)

以上内容是在2016年编写的。一个2022年的评论提到了TIOCGPTPEER,它是一种允许应用程序获得新文件描述符的ioctl代码:

(因为Linux4.13)在fd中给出了引用伪终端主的文件描述符,打开(带有给定的open(2)-style标志)并返回引用对等伪终端从设备的新文件描述符。无论从设备的路径名是否可以通过调用进程的挂载命名空间访问,都可以执行此操作。

(关闭的文件描述符仍然无效)。

票数 3
EN

Unix & Linux用户

发布于 2022-02-20 16:26:14

对另一个答案的评论:是的,实际上。

当您创建pty对时,让您的主结束进程打开从端,并保持其打开。这样,不管有多少客户机打开和关闭从属程序,它的引用计数永远不会变为零,也不会变得无效。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/290847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档