1
這裏是我的代碼:printf的選擇調用之前不會被調用,同時等待標準輸入
int main()
{
struct timeval tv;
fd_set fds;
char cmd[256]={};
int second = 0, ret;
printf("Enter Command : ");
while (1) {
tv.tv_sec=1;
tv.tv_usec=0;
FD_ZERO(&fds);
FD_SET(STDIN_FILENO, &fds);
if ((ret = select(STDIN_FILENO+1, &fds, NULL, NULL, &tv)) < 0) {
printf("Select Failed: Exiting\n");
break;
}
if (FD_ISSET(STDIN_FILENO, &fds))
{
if (fgets(cmd, 256, stdin) != NULL) {
printf("Running Command - %s\n", cmd);
input_invoke_func(cmd);
printf("Enter Command : ");
}
} else {
second++;
//print_time(second);
}
}
return 0;
}
我看到「輸入命令:」字符串不打印,直到我提供任何STDIN輸入。請讓我知道這種行爲的原因!
謝謝。
標準輸出通常是行緩衝的,並且在'printf();'中沒有''\ n''。在'printf()'後面添加一個和/或調用'fflush(stdout);'' –
您需要刷新標準輸出 –