gpt4 book ai didi

linux - cgi-停止读取输入

转载 作者:太空宇宙 更新时间:2023-11-04 03:52:26 26 4
gpt4 key购买 nike

我尝试通过 cgi 脚本来表示鼠标移动。尝试过这个:

file=fopen(MOUSEFILE, "r"); 
while((fread( &ie, sizeof(struct input_event),1,file)==0) && (i<1000)){i++;}
fclose(file);

if(i==1000){
printf("<IMG SRC=\"../images/mouse.bmp\">");
}else{
if(ie.type==2 && ie.code==0 && ie.value==-1){
printf("<IMG SRC=\"../images/left.bmp\"");
}else if(ie.type==2 && ie.code==0 && ie.value==1){
printf("<IMG SRC=\"../images/right.bmp\"");
}else if(ie.type==1 && ie.code==272 && ie.value==1){
printf("<IMG SRC=\"../images/pressed.bmp\">");
}
}

如果鼠标移动或发生某些事情,则工作正常,但如果鼠标处于非事件状态,则页面会因等待读取而死亡。如何在 500 毫秒 - 1 秒后停止执行 fread ???或者我怎样才能找到解决方法???

最佳答案

找到了解决方法:

file = open(MOUSEFILE, O_RDONLY | O_NDELAY);
while( (1>read(file, &ie, sizeof(struct input_event))) && (i<50000) ){i++;}
close(file);
if(i==50000){
printf("<IMG SRC=\"../images/mouse.bmp\">");
}else{ ...

O_NDELAY 不关心文件是否已准备好,并在第一次尝试后中止读取。因此代码会尝试50000次,然后退出while

关于linux - cgi-停止读取输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25844112/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com