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

发布于 2024-08-19 15:49:44 字数 456 浏览 13 评论 0原文

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

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

如果是这样,任何人都可以提供一个关于如何执行此操作的简洁示例吗? 提前致谢! 编辑: 这是我想出的头文件!

I am programming something that needs an interface to Bash. At first I thought I could just use popen or QProcess. ( I'm using QT C++ ) They work fine but I can't get them to run Bash in a tty, which you need if you are going to use anything like sudo, which requires a tty/pty to accept a password.

I found some things like forkpty(), openpty(), etc. in the GNU Standard C libraries, but could not figure out how to use them or find any good examples, even after reading their corresponding manpages. Literally, all this part of my program needs to do is be able to read/write from a tty running /bin/bash. Is it really that simple, or is there more to it than meets the eye?

If so, can anyone please provide a concise example on how to do this?
Thanks in advance!
EDIT: Here's the header file I've come up with!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

阳光①夏 2024-08-26 15:49:44

考虑运行 /bin/sh -s 的选项,这意味着“从标准输入读取命令”。这消除了模拟终端的需要。

Consider the option of running /bin/sh -s, which means "read commands from standard input". That removes the need to emulate a terminal.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文