
楼上的想让你的程序变成悲剧...linux下sleep函数的参数是秒为单位的...休眠200秒...
睡眠小于1秒用usleep,单位是毫秒...
所以,楼上的程序把sleep改成usleep就可以 了...
while(1)
{
/* any thing you want to do*/
usleep(200)
}
另外我觉得你要说的好像是:希望while循环执行某些 *** 作,执行时间到200毫秒之后退出while循环?
最简单是用间隔定时器...
你查下这几个函数:timer_create,timer_settime等。
时间设置比较精确,可以设置一段时间间隔,过了指定的时间之后,会给当前进程发送一个SIGALRM信号,你while循环的条件,可以在SIGALRM的信号处理函数里面修改,这样,到时间之后while就可以退出了....
这样写:
//...
...
...
static char flag=1
...
int main(void)
{
signal(SIGALRM, timer_handler)
/*
申请并且设置间隔定时器的间隔
*/
while(flag)
{
/*循环内的 *** 作*/
}
...
return 0
}
void timer_handler(unsigned int signal)
{
flag=0
}
1、主要是要解析MP3格式,计算MP3文件长度,然后根据播放每帧需 26ms,计算出播放时间。文件IO读写,就用fopen\fread系列酒可以。2、#include <mmsystem.h>//包括多媒体API,标准c语言没有相关接口函数
unsigned char str[256]
sprintf(timebuffer,"status %s position",MusicName)//timebuffer输出缓存区,格式字符串到timebuffer,MusicName为播放歌曲的完整路径
mciSendString(Music,str,256,NULL)//获取时间,单位为毫秒
curtime=atoi(str)/1000//单位化为秒,后面可以根据需要处理时间
clock函数返回的是cpu时间,并不是秒数,真正的一秒钟可能包含若干个CPU时间,这个值通常是由宏CLOCKS_PER_SEC来定义,表示一秒中有CLOCKS_PER_SEC这么多个cpu时间,不同的编译器可能不同,比如,linux C中,它是1000000,在VC6中,它是1000,你用cost除以CLOCKS_PER_SEC即可得到实际的秒数。
附linux下clock函数说明:
在单独的窗口中打开图片可以看得更清楚一些,注意红线部分说明:要计算秒数,除以CLOCKS_PER_SEC
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)