我正在尝试在无限循环中使用fget,因为我需要用户的特定输入。我要连续打印一些东西,直到收到用户的任何输入为止。但是fgets似乎使程序等待输入。
我尝试使用其他输入方法,例如gets。
while(1){
char input[100];
fgets(input, sizeof(input),stdin);
printf("I want this statement to continuously print.");
}
该语句仅在我输入文本时打印。但是我希望它不考虑输入内容而连续打印该语句。
答案 0 :(得分:1)
C标准库中的所有I / O都是 blocking I / O。这意味着,如果您从文件(或stdin等)中读取或写入文件,则只有在发生读取或写入(或遇到错误)后,读取或写入功能才会返回。
如果要在执行I / O操作时执行代码,则需要(1)使用多个线程,或者(2)使用低级非阻塞I / O(例如Posix read /使用O_NONBLOCK写入文件)。使用stdin时,这可能还涉及对终端设置的一些低级混乱。