我正在为操作系统学术类编写一个简化的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,导致问题
... freopen("/dev/tty","rw",stdin); // enabling ncurses mode initscr(); ...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。