微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在C中的ncurses应用程序 – 读取标准input

我正在为操作系统学术类编写一个简化的Linux标准版本命令,而且我可以使用ncurses来简化它。 “简体”意味着用户应该能够使用箭头PgUp,PgDown滚动视图,并且还可以使用g和G跳转命令。 此外,程序应该从文件(其名称作为参数给出)或标准inputstream读取input,如

echo "test" | ./less

文件中读取很容易(在这种情况下没有问题),当我使用pipe道运算符时会出现问题 – getch()保持返回-1(EOF)并且不响应任何按键。 我目前的代码如下所示:

char c; while((c = fget(stdin)) != EOF) { // reading from stdin char by char,let's say } // enabling ncurses mode initscr(); keypad(stdscr,TRUE); noecho(); cbreak(); int ch; while(true) { ch = getch(); switch(ch) { case KEY_LEFT: ... } } ...

我认为这是一个冲洗stream的问题,但没有类似的解决scheme为我工作。 我从标准input读取所有数据,直到最后(EOF),所以我不明白为什么EOF保持在缓冲区中。

有没有解决方法? 我浏览过类似的问题,但是我还没有发现任何线索。 也许ncurses是不是我的任务的好解决scheme?

如何等待用户进程的系统进程?

WINAPI:静态对话框项目的彩色边框

如何让这个getnameinfo代码工作

如何处理交叉平台C库中的Unicodepath?

链接共享库互相共享库c ++

用pthread_win32提高进程优先级

我如何以编程方式操纵Windows桌面图标位置?

通过Google日历API查询时,执行请求失败

在Linux中测量进程统计信息

使用C读取大文件(大于4GB)使用读取function,导致问题

问题解决了,我在进入ncurses模式之前添加了一行:

... freopen("/dev/tty","rw",stdin); // enabling ncurses mode initscr(); ...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐