3
我有一個ncurses的程序看起來像這樣使用echo()函數調用getch()以確保在執行程序中的下一個語句之前該字符在屏幕上可見嗎?
1. int c =0;
2. initscr();
3. timeout(-1);
4. printw("Enter a character");
5. getch();
6. printw("\nOkay\n");
7. c = 5;
我預料的getch()
輸出以及以下printw()
應該發生的(並且是在屏幕上可見)前的C被修改爲5。但是這似乎並沒有發生(使用qemu-kvm並打破此時驗證)。有什麼理由可能會發生這種情況,或者有什麼方法可以確保輸出在執行下一條語句之前在屏幕上可見? 確實fflush(標準輸出)保證?
該操作系統是使用qemu-kvm運行的虛擬化gentoo。屏幕處於控制檯模式(X未初始化)。
緩衝輸出,就像在普通的c?如果是這樣 - 應該有某種沖洗 - 這可能有助於http://ubuntuforums.org/showthread.php?t=547801 – Anton
@Anton是啊我*猜測*輸出緩衝,但我怎麼驗證並糾正! – AnkurVj
變更日誌表示從版本1.8.2開始,wgetch()之後的輸出會被刷新,你有這個版本嗎? – Anton