我试图在 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
请提出您对此的看法。