gpt4 book ai didi

c - 非规范和非回声模式不适用于管道

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:02:59 26 4
gpt4 key购买 nike

最近,我正在尝试编写一个简单版本的 Linux 命令 more。为此,我需要在终端中进入非规范模式和非回声模式,以便在按键后立即获得输入,并且终端不会显示我键入的字符。

我是这样做的:

  // set the terminal mode
struct termios tm;
tcgetattr(STDIN_FILENO, &old);
tm = old;
tm.c_lflag &= ~(ICANON | ECHO);
tm.c_cc[VMIN] = 1;
tm.c_cc[VTIME] = 0;
tcsetattr(STDIN_FILENO, TCSADRAIN, &tm);

这在我使用像这样的参数时有效

more test_file

但是当我尝试使用其他命令通过管道传输 more

ls /bin | more

终端返回规范和回显模式。为什么会这样?

最佳答案

一般来说,像more这样的东西应该从stderr(或者有时是/dev/tty但是stderr效果更好)。您改为在 stdin 上设置终端。这不太管用。

关于c - 非规范和非回声模式不适用于管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55300831/

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