ユーザーが入力した文字数を 5 秒以内に出力しようとしています。しかし、入力バッファのフェッチで問題に直面しています。
コードスニペット
# include <signal.h>
# include <sys/time.h>
# define INTERVAL 3
# define MAX_SIZE 1024
char buffer[MAX_SIZE];
int count = 0;
void alarm_handler (int i)
{
printf("\r\n");
printf("\nTimer expired.....\r\n");
count = read(stdin,buffer,sizeof(buffer));
puts(buffer);
printf("count:%d\r\n",strlen(buffer));
exit(0);
}
int main()
{
signal(SIGALRM,alarm_handler);
alarm(INTERVAL);
setbuf(stdin, NULL);
printf("Start Triggering....\r\n");
while (1)
{
gets(buffer);
}
return;
}
上記のコードでは、ユーザーが入力した入力を取得しておらず、出力バッファーは常にゼロです。何がうまくいかなかったのか、その解決策を教えてください。
出力
++++++ トリガーを開始.... アカカカカカカ タイマー切れ…… カウント:0
しかし、私は以下の出力を期待しています
+++++++++++++++++++++++++++++++ トリガーを開始.... アカカカカカカ タイマー切れ…… アカカカカカカ カウント:14
これについてあなたの見解を提案してください。