定时器与getchar()的问题??奇怪!

bladeboy 2003-09-19 12:07:59
我主程序里:
while(1)
{
printf(".....");
printf(".....");
printf(".....");
printf(".....");
c = getchar();
switch(c)
{
//.....
}
}
在这之前,我用sigaction(SIGALRM) setitimer()设定了一个1秒的定时器
问题是,没有这个定时器之前,程序运行倒getchar后,屏幕就停在那里等待用户
输入一个字符了,现在屏幕确以1秒的周期不停的在往上面滚(在prinf())但是
用户仍然可以输入,很不舒服。请问如何解决??
...全文
46 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
bladeboy 2003-09-19
  • 打赏
  • 举报
回复
补充一下,即使定时器函数里面什么事情都不做,屏幕仍然在滚动
fierygnu 2003-09-19
  • 打赏
  • 举报
回复
getchar是用read系统调用实现的,而信号会使系统调用退出,此时c的值为-1,并没有实际意义。可以如下处理:
do {
c = getchar();
} while (c < 0);

23,118

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧