原理:利用ioctl(0,FIONREAD,&i)系统调用实现非阻塞式读入,如果有,则i为非零值,这样去检测是否有要求程序停止的请求,同时结合sleep()系统调用,来实现倒计时的去检测键盘是否有输入,如果超过时间没有检测到,则让程序正常运行,否则停止,让用户操作,是否手动启动程序,这种类型的I/O被称为轮询,就好像不断地询问设备状态,进而转化用户是否在手动操作。方便程序的发布与调试相结合。
int kbhit()
{
int i;
ioctl(0,FIONREAD,&i);
return i;
}
int stop_autorun()
{
int sec = 5;
do
{
sec--;
printf("press enter key to stop autorun ...... %d\n",sec);
if(0 == sec)
{
return 0;
}
}while(!kbhit())
return 1;
}
int main()
{
if(stop_autorun())
{
return 0; //停止程序启用autorun的运行
}
autorun(); //让程序正常运行
return0;
}