问题标签 [pty]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
6896 浏览

c++ - 在 Linux C++ 中获取 PTY 的最简单方法

我正在编写一些需要 Bash 接口的东西。起初我以为我可以只使用 popen 或 QProcess。(我正在使用 QT C++)它们工作正常,但我无法让它们在 tty 中运行 Bash,如果你要使用 sudo 之类的东西,你需要它,这需要 tty/pty 来接受密码。

我在 GNU 标准 C 库中找到了一些类似 forkpty()、openpty() 等的东西,但即使在阅读了它们相应的联机帮助页之后,也无法弄清楚如何使用它们或找到任何好的示例。从字面上看,我的程序的所有这部分需要做的是能够从运行 /bin/bash 的 tty 读取/写入。真的就这么简单,还是有比看上去更多的东西?

如果是这样,谁能提供一个简明的例子来说明如何做到这一点?提前致谢!编辑:这是我想出的头文件!

0 投票
1 回答
809 浏览

c++ - X 在调用 forkpty 时抛出错误。(C++)

当我的程序到达这一行时:

输出这个:

并终止。如您所见,我正在尝试创建一个 pty 来运行东西,但它不起作用。

另外,有没有办法forkpty()可以在类中调用?(我尝试了两种方法,但都没有奏效。)

我在 Ubuntu 9.10 上用 QT C++ 编程。

编辑:是最终对我有用的代码问题的链接。

0 投票
1 回答
4845 浏览

c++ - 文件描述符中的 Read() 挂起

嘿,希望这应该是我最后一个与 PTY 相关的问题,我可以继续讨论更令人兴奋的问题。(C;

这是我为创建和读取/写入 pty 而编写的一组小函数:http: //pastebin.com/m4fcee34d 唯一的问题是它们不起作用!在我运行初始化程序和 writeToPty("ls -l") 后, readFromPty 的“输出”仍然为空。

Ubuntu,QT C++

编辑:好的,我可以确认所有这些东西都有效,除了读取循环。在调试器的 locals/watchers 选项卡中,它显示 QString“输出”实际上确实得到了正确的数据,但是在它( read() )用完输出中的字符之后它运行然后挂起。发生了什么事,我该如何解决?谢谢!(C:

编辑:是问题的链接,其中包含最终对我有用的代码。

0 投票
2 回答
770 浏览

c - 子进程无法从创建的伪终端读取

我正在尝试使用伪终端编写一个可以使用密码登录 SSH 的应用程序。但是如果我 write() 到主设备,那么数据就不会出现在从设备中。这是一个简单的测试用例:

该应用程序将首先输出“Press Enter to send a byte”。按 Enter 后,我希望子进程的 read() 返回。但是即使 master 的 write() 成功,那里的 read() 似乎也会无限期地阻塞,所以 master 在 waitpid() 上永远等待。这是怎么回事?

0 投票
1 回答
5876 浏览

linux - linux上的软件串口环回

目前我需要开发一些程序,将通过串行线路与思科设备进行通信。我想在我的开发 linux 机器上构建测试环境。所以,我找到了dynamips cisco emulator。该仿真器可以通过带有“-U /dev/ttyS0”选项的串行线提供接口。好吧,这会导致 dynamips 打开硬件串行端口并通过它进行通信。我可以使用 minicom 等串行客户端从另一台 linux 机器连接到这个硬件串行端口。

但是,由于我在两台 linux 机器上都使用了 virtualbox,所以我通过 virtualbox 功能链接串行端口以将串行端口转发到命名管道。该方案似乎有效,但非常多余。我正在寻找一种在单个 linux 机器上运行 dynamips 和 minicom 的方法。

我发现伪终端在我的情况下可能很有用。但我尝试使用“-U /dev/ptmx”运行 dynamips,然后与 minicom 连接以创建 /dev/pts/... 端口,反之亦然。在这两种情况下,我都有输入/输出错误。

0 投票
6 回答
7061 浏览

c - 如何向子进程发送 Ctrl-C 控制字符或终端挂断消息?

我有一个在伪终端中运行的子进程。父进程不以 root 身份运行,但子进程通过 su 或 sudo 运行。因此,不可能向子进程发送信号以强制其退出。我想通过以下方式之一强制它退出:

  • 模拟 Ctrl-C。
  • 模拟终端挂断。

我该怎么做?我已经有一个 pty master fd,我尝试过这样的事情:

但它什么也没做。

0 投票
1 回答
4759 浏览

c - forkpty - 套接字

我正在尝试开发一个简单的“telnet/server”守护程序,它必须在新的套接字连接上运行程序。这部分工作正常。

但是我必须将我的新进程关联到一个 pty,因为这个进程有一些终端功能(比如 readline)。

我开发的代码是(其中 socketfd 是新输入连接的新套接字文件描述符):

使用该代码,我的“prgName”的 stdin / stdout / stderr 文件描述符与套接字相关联(使用 ls -la /proc/PID/fd 查看时),因此,此进程的终端功能不起作用.

通过远程设备上的 ssh/sshd 连接并执行“localy”(在 ssh 连接下)prgName 的测试表明,该进程“prgName”的 stdin/stdout/stderr fd 与 pty 相关联(因此此过程的终端功能运行良好)。

我做错了什么?如何将我的 socketfd 与 pty(由 forkpty 创建)相关联?

感谢

亚历克斯

0 投票
1 回答
1089 浏览

ruby - 如何在 Ruby 中终止 PTY.spawn 调用?

如果我使用 ruby​​ 的 pty 类运行这样的命令,如果找到某个输入字符串,我该如何杀死它?

这样做的正确方法是什么?

0 投票
1 回答
1007 浏览

c - 如何通过 minicom 或 screen 与 pty 通信?

我正在尝试围绕某些硬件提供类似 AT/Modem 的接口。在这篇文章之后,我让服务器使用 openpty() 设置了一个 pty。

现在,我可以使用打开从属设备并通过 read() 和 write() 调用进行通信的客户端应用程序按预期与服务器通信。

但是,我也希望能够使用屏幕命令或 minicom 手动向从站发出命令。但是,在尝试执行此操作时,服务器似乎从未收到任何数据。这种方法有什么重要的地方吗?

0 投票
1 回答
2238 浏览

c - 从 pty 读取

我想在 Linux 上使用(Unix 98 风格的)伪 tty接收(以及以后的进程)write(1)和消息。wall(1)我已经有以下最小实现:

现在的问题是它只适用于阅读第一条消息,然后 read 给了我一个 EIO 错误。这是为什么?