gpt4 book ai didi

unix - 如何创建用于读取输出和写入输入的伪 tty

转载 作者:行者123 更新时间:2023-12-04 11:46:06 26 4
gpt4 key购买 nike

我正在使用 fork() 和 execvp() 来生成一个进程,该进程必须相信它已连接到交互式终端才能正常运行。

生成后,我想捕获进程的所有输出,并能够将输入发送到进程。

我怀疑 psuedo-ttys 可能会在这里有所帮助。有没有人有关于如何做到这一点的片段?

最佳答案

你想调用 forkpty()。从手册页:

#include <pty.h> /* for openpty and forkpty */

pid_t forkpty(int *amaster, char *name, struct termios *termp, struct winsize *winp);

Link with -lutil.

The forkpty() function combines openpty(), fork(), and login_tty() to create a new process operating in a pseudo-terminal. The file descrip‐ tor of the master side of the pseudo-terminal is returned in amaster, and the filename of the slave in name if it is not NULL. The termp and winp parameters, if not NULL, will determine the terminal attributes and window size of the slave side of the pseudo-terminal.



您的父进程通过从 forkpty 存储在“amaster”中的文件描述符读取和写入来与子进程对话 - 这称为主伪终端设备。 child 只与连接到从属伪终端设备的 stdin 和 stdout 对话。

关于unix - 如何创建用于读取输出和写入输入的伪 tty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1203652/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com