当前位置: 技术问答>linux和unix
定时器与getchar()的问题??奇怪!
来源: 互联网 发布时间:2015-04-20
本文导语: 我主程序里: while(1) { printf("....."); printf("....."); printf("....."); printf("....."); c = getchar(); switch(c) { //..... } } 在这之前,我用sigaction(SIGALRM) setitimer()设定了一个1秒的定时器 问题是,没有这个定时器之前,程序运行倒getchar...
我主程序里:
while(1)
{
printf(".....");
printf(".....");
printf(".....");
printf(".....");
c = getchar();
switch(c)
{
//.....
}
}
在这之前,我用sigaction(SIGALRM) setitimer()设定了一个1秒的定时器
问题是,没有这个定时器之前,程序运行倒getchar后,屏幕就停在那里等待用户
输入一个字符了,现在屏幕确以1秒的周期不停的在往上面滚(在prinf())但是
用户仍然可以输入,很不舒服。请问如何解决??
while(1)
{
printf(".....");
printf(".....");
printf(".....");
printf(".....");
c = getchar();
switch(c)
{
//.....
}
}
在这之前,我用sigaction(SIGALRM) setitimer()设定了一个1秒的定时器
问题是,没有这个定时器之前,程序运行倒getchar后,屏幕就停在那里等待用户
输入一个字符了,现在屏幕确以1秒的周期不停的在往上面滚(在prinf())但是
用户仍然可以输入,很不舒服。请问如何解决??
|
getchar是用read系统调用实现的,而信号会使系统调用退出,此时c的值为-1,并没有实际意义。可以如下处理:
do {
c = getchar();
} while (c
do {
c = getchar();
} while (c
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!