Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
pty终端分组模式TIOCPKT_C_Linux_Unix_Terminal_Pty - Fatal编程技术网

pty终端分组模式TIOCPKT

pty终端分组模式TIOCPKT,c,linux,unix,terminal,pty,C,Linux,Unix,Terminal,Pty,如果我启动一个终端,我如何知道它以什么模式启动?谁来决定?我可以在数据包模式下启动终端吗 我遇到了这样一个链接,上面写着:数据包模式是通过在主机侧推pckt模块来启用的。-我不完全理解这一点。您提到的链接是针对SCO Unix的,它有I/O子系统。对STREAMS有一个很好的概述(它适用于Solaris,但同样的概念也适用于其他*nixe) 手册页面告诉您必须将pckt模块推送到流上,这是通过使用命令调用ioctl()完成的。上面的第一个链接应该使这个概念更清晰,因为它描述了流是如何工作的 但遗

如果我启动一个终端,我如何知道它以什么模式启动?谁来决定?我可以在数据包模式下启动终端吗


我遇到了这样一个链接,上面写着:
数据包模式是通过在主机侧推pckt模块来启用的。
-我不完全理解这一点。

您提到的链接是针对SCO Unix的,它有I/O子系统。对STREAMS有一个很好的概述(它适用于Solaris,但同样的概念也适用于其他*nixe)

手册页面告诉您必须将pckt模块推送到流上,这是通过使用命令调用ioctl()完成的。上面的第一个链接应该使这个概念更清晰,因为它描述了流是如何工作的

但遗憾的是,Linux不支持流。要在linux上启用pty的数据包模式,可以使用TIOCPKT调用ioctl(),就像在您的第一个链接中一样


创建新pty时默认为正常(非数据包)模式。

谢谢@nos。感谢您的回复。我现在有点困惑。流模式和包模式有什么关系?它们是相对的吗?您所指的pckt模块是什么?pckt模块是软件块的名称(正如您在问题中指出的文档所述),它在使用流的Unix上通过pty实现数据包模式。除非您使用的是Solaris、AIX或SCO Unix,否则您不必担心这一点。pty数据包模式意味着您的pty主机能够从从机接收某些控制信息,这意味着pty上的每个read()调用将具有与不启用数据包模式时不同的结构:1字节将告诉您这是否是控制信息,或者它是否是正常数据。请注意,在您的问题中,您不清楚“启动终端”是什么意思。如果您只是启动一个终端仿真器应用程序,您不需要担心这一点,因为您只需要与从机端进行交互。如果你正在创建和控制一个伪终端(pty),你可以自己决定你想要什么。谢谢@nos.“启动终端”,我的意思是,我启动了一个shell。因此,当我在
linux
上启动一个shell时,它将永远不会处于
数据包模式
?@hari一个shell连接到pty/tty的从属部分,它永远不会处于数据包模式。发布了一个相关问题: