0

我想在 Linux 中创建一个新的 pty 会话,就像 gnome-terminal xterm 和其他人一样。我的一半任务正在工作,我用 openpty 创建了一个 pty 会话,fork() 一个进程,子进程使用从 FD,其余进程终端连接到网络套接字。

通过网络我可以连接到“远程终端”,但它不能正常工作。没有回声,按下回车后不发送字符(所以我无法在 nano、mc 等中导航)。

termios 结构设置为cfmakeraw(struct termios).

问题:默认会话中的默认 termios 设置是什么,例如 gnome-terminal 和其他。

4

2 回答 2

2

NULL作为struct termios *参数传递给openpty()(或forkpty(),您应该查看!),结果默认值对于交互式终端应该是合理的。

于 2013-05-28T03:53:14.037 回答
0

tcgetattr()如果您的标准输入、标准输出或标准错误将进入您的终端并且是正常的,您可以使用and将设置从终端复制到您的 pty tcsetattr()

struct termios ttyset;

if (tcgetattr(FILE_STDERR, &ttyset) != 0)
    ...handle error - maybe try stdout or stdin...
if (tcsetattr(pty_fd, TCSANOW, &ttyset) != 0)
    ...handle error...

基本上,这假设您有一组很好的终​​端设置开始并将设置复制FILE_STDERRpty_fd(假设是伪 tty 从端的文件描述符)。

当然,您可以在使用它们初始化伪 tty 之前相当长的时间捕获这些设置,即使它们在上面的代码片段中显示为相邻的操作。

于 2013-05-28T04:35:38.003 回答