NCurses:从其他终端读取输入未命中键

NCurses: reading input from other terminal misses keys

我正在将 ncurses hmi 重定向到另一个已经存在的终端。虽然输出部分工作正常(因此未在此处显示),但输入丢失了随后出现在终端中的键,就好像它们是在没有 ncurses 的情况下输入的一样。

#include <stdio.h>
#include <curses.h>

int main(int argc, char *argv[])
{
    FILE *fd = fopen(argv[1], "r+");
    SCREEN *scr = newterm(nullptr, fd, fd);
    set_term(scr);
    noecho();
    keypad(stdscr, TRUE);

    while (true) {
        int ch = wgetch(stdscr);
        printf("In %d\r\n", ch);    
    } 

    return 0;
}

我在 Ubuntu 上创建了两个终端,并使用 'tty' 获取其中一个的名称(我们称之为 'curses-terminal')。当在另一个终端中启动上述内容时,此名称将用作参数。
在 curses 终端中键入时,我希望键的代码出现在另一个终端中,而在 curses 终端中看不到任何内容。
相反,我看到一些字符扩散到 curses 终端中,而它们的代码没有显示在另一个终端中。当输入速度更快时,普通字符会发生这种情况,但尤其是使用箭头键和 ALT- 组合时,错误率是 >> 50%。
有没有我忘记的设置?

使用 G.M. 的提示,我能够可靠地获得所有输入。 运行

tail -f /dev/null

在 curses-terminal 中附加 ncurses 应用程序之前。 如果您(像我一样)想在 fopen 之后从您的应用程序中发送此命令,您可能会感到沮丧。