3
我正在寫一個Linux標準的簡化版本減命令的OS學術類,我允許使用ncurses使它更容易。 「簡化」意味着用戶應該能夠用箭頭,PgUp,PgDown滾動視圖,並且還可以使用g和G跳轉命令。此外,程序應該從文件中讀取(它的名稱作爲參數),其輸入之一或標準輸入流,像ncurses在C中的應用程序 - 讀標準輸入
echo "test" | ./less
從文件中讀取被容易(在這種情況下沒有問題)時,會出現問題時我正在使用管道運算符 - 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:
...
}
}
...
我認爲這是一個沖洗流的問題,但沒有類似的解決方案爲我工作。我從標準輸入讀取所有數據,直到最後(EOF),所以我不明白爲什麼EOF保留在緩衝區中。
有沒有解決方法?我瀏覽過類似的問題,但是我沒有發現任何有關我的問題的線索。也許ncurses不是我的任務的好解決方案?
的答案添加到您自己的問題!然後過了一天左右,你也可以接受它。 – 2011-12-16 17:45:29