使用linux伪终端API进行多个调试终端

时间:2012-11-26 01:32:04

标签: linux pty

Ubuntu Linux:如何获得引用一个主侧的路径 一个伪终端对?...从属端很容易......但是主端似乎只是作为一个打开的文件描述符存在,但似乎没有一个有效的Linux路径。

关于工作的Linux伪终端示例http://www.man7.org/tlpi/code/online/all_files_by_chapter.html#ch64 这本非常好的Liunx API书的最后一章介绍了http://www.nostarch.com/tlpi

关于Linux linux伪终端API的当前状态的问题。上面提到的例子,根据需要将forked / exec'ed程序的stdin / stdout / stderr流重定向到PTY slave ...所有人都很高兴在PTY的那一侧。

但是我需要作为参数传递给多标签终端模拟器进程的伪终端主机路径似乎尚未存在。

我的问题是关于为伪终端对的主侧创建命名路径...尽可能最好,在上面提到的示例代码中,只有PTY从属端实际上有一个名称,因为PTY Master端仅通过打开文件描述符引用...当我通过“readlink(”/ dev / fd / 3“...)查询主端路径时,它返回PTY主克隆路径“/ dev / ptmx”,因此我认为PTY Master方面可能还没有路径名?我想我可能需要通过调用link()来创建一个有效的路径....但是link()只接受一个现有的路径,而不是一个打开的文件描述符作为它的参数?...所以我试着调用link(“/ dev / ptmx”,NewPTM_name)重新调整到PTY cloan设备,希望它可以创建一个链接到导致PTY主端,但该调用失败,返回-1。

我想将这个PTY Master侧路径字符串参数传递给终端仿真器,可能是通过它的命令行,或者在RoxTerm的情况下可能是DBus ......

我意识到很多终端模拟器程序都有一个-e或-x参数,允许一个人在终端窗口内运行一个程序...不幸的是,采用这种方法并不会让人对父进程有很大的控制权。子进程树......因为这项工作支持共享内存多处理系统,所以需要这样做。

1 个答案:

答案 0 :(得分:0)

Liunx伪终端API的当前状态不能将主端Linux PTY路径鲁棒地传递给终端仿真程序,因为伪终端接口的主端仅可用作打开文件描述符。 ..    ..但是PTY接口的slave端确实拥有一个路径名,可以作为程序之间的参数传递..如n.m所建议的那样。一个人可以解决这个界面限制,如何将程序的stdio互连到终端仿真窗口中的新选项卡....通过DBus请求终端仿真程序创建一个新的(命名的)终端选项卡,并返回作为DBus调用的结果的相关从属侧路径。
   ..这导致了这个问题 “如何:C ++,DBus调用创建新终端的终端仿真程序,返回slave PTY”