1

我正在使用 fgets 来读取用户输入。但是如果我按下“Ctrl+C”,我会在终端上得到一个 ^C 字符。如果有什么方法可以防止这种回声,我正在徘徊?

4

2 回答 2

1

如果您所缺少的只是防止 ^C 出现在屏幕上,请使用 curses 禁用回显:

#include <ncurses.h>                                                              
#include <stdlib.h>                                                               

void main() {                                                                     
    char buf[90];                                                                 
    initscr();                                                                    
    noecho();                                                                     
    fgets(buf, 80, stdin);                                                        
}                           
于 2013-03-06T02:50:36.953 回答
0

CTRL-C 用于中止当前任务并重新获得用户控制权。这是一个特殊的序列,它使操作系统向活动程序发送信号。

CTRL-C 信号的默认操作是终止活动程序,无论它是否正在执行 fgets()。覆盖它的一种方法是编写您自己的信号处理程序并在您的程序中忽略 CTRL-C ,我怀疑这是否会满足您的目的对您有任何好处。

于 2013-03-06T02:43:25.093 回答