我试图编写类似于shell的程序,但结合了终端模拟器。这样做的原因是我不能刷写写缓冲区来发送数据到程序或程序检查输入/输出是管道。
问题在于设置termios结构。我希望我的伪终端作为标准Linux终端工作,它应该与轮询,写和读。
我使用的是openpty函数和login_tty。我使用openpty两次打开标准输入/输出终端和stderr终端。
感谢。
答案 0 :(得分:0)
此代码应该有效。
if (openpty(&fds[0], &fds[1], NULL, NULL, NULL) == -1) {
perror("openpty error ");
return;
}
tcgetattr(fds[0], &termios);
termios.c_lflag &= OUR_FLAGS;
tcsetattr(fds[0], TCSANOW, &termios);
问题是我不知道,openpty设置了哪些标志,但看起来它正确配置终端。
我仅设置控制标志。在我的情况下,我已经禁用了这样的回声
termios.c_lflag &= ~ECHO;