当前位置:首页 » 操作系统 » linux毫秒转换

linux毫秒转换

发布时间: 2023-07-10 12:35:33

1. 在linux下怎样用c语言获取MP3时长最好有个例子!

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;//单位化为秒,后面可以根据需要处理时间

2. 在linux下,想用sleep函数实现延时五秒,应该怎么设参数

使用权限 : 所有使用者
使用方式 : sleep [--help] [--version] number[smhd]
说明 : sleep 可以用来将目前动作延迟一段时间
参数说明 :
--help : 显示辅助讯息
--version : 显示版本编号
number : 时间长度,后面可接 s、m、h 或 d
其中 s 为秒,m 为 分钟,h 为小时,d 为日数
例子 :
显示目前时间后延迟 1 分钟,之后再次显示时间 :
date;sleep 1m;date

这个命令更多应用于shell脚本编程里和程序里

如下面的一段程序:

应用程序:

复制代码
代码如下:

#include <syswait.h>
usleep(n) //n微秒
Sleep(n)//n毫秒
sleep(n)//n秒
驱动程序:
#include <linux/delay.h>
mdelay(n) //milliseconds 其实现
#ifdef notdef
#define mdelay(n) (\
{unsigned long msec=(n); while (msec--) udelay(1000);})
#else
#define mdelay(n) (\
(__builtin_constant_p(n) && (n)<=MAX_UDELAY_MS) ? udelay((n)*1000) : \
({unsigned long msec=(n); while (msec--) udelay(1000);}))
#endif
调用asm/delay.h的udelay,udelay应该是纳秒级的延时
Dos:
sleep(1); //停留1秒
delay(100); //停留100毫秒
Windows:
Sleep(100); //停留100毫秒
Linux:
sleep(1); //停留1秒
usleep(1000); //停留1毫秒

每一个平台不太一样,最好自己定义一套跨平台的宏进行控制

秒还是微秒?关于延时函数sleep()
因为要写一段代码,需要用到sleep()函数,在我印象中,sleep(10)好像是休眠10微秒,结果却是休眠了10秒(在Linux下)。觉得很奇怪,因为头儿也记得好像是微秒为单位的。所以就查了一下。

原来linux下的sleep函数原型为:
unsigned int sleep(unsigned int seconds);
而MFC中的Sleep函数原型为:
void Sleep(DWORD dwMilliseconds);
也就是说,Linux下(使用的gcc的库),sleep()函数是以秒为单位的,sleep(1);就是休眠1秒。而MFC下的sleep()函数是以微秒为单位的,sleep(1000);才是休眠1秒。原来如此啊。而如果在Linux下也用微妙为单位休眠,可以使用线程休眠函数:void usleep(unsigned long usec);当然,使用的时候别忘记#include <system.h>哦。

另外值得一提的是,linux下还有个delay()函数,原型为extern void delay(unsigned int msec);它可以延时msec*4毫秒,也就是如果想延时一秒钟的话,可以这么用 delay(250);

3. linux usleep是多少毫秒

这是个函数,具体多少毫秒得看你输入的参数,比如usleep(5000),即为5ms

4. linux:统计耗时

linux下的方法:
(1) 使用命令time:
[root@localhost-120 xgf]# time ./standard
counter = 1000000

real 0m0.006s
user 0m0.000s
sys 0m0.000s
time命令对秒(s)级别的很精确,而对毫秒级的误差比价大。我们可以通过sleep/usleep函数来进行测试。sleep(0.1)或者usleep(100)都是表示休眠100ms,而测试结果都是:
real 0m0.002s
user 0m0.000s
sys 0m0.000s
(2) 通过difftime函数:
double difftime(time_t time1, time_t time0);计算time1和time0之间的秒数。测试程序如下:

#include <stdio.h>
#include <time.h>
#define MAX 1000

int do_work()
{
int counter = 0; /* the counter */
int i, j; /* the loop variable */

/* accumulate the counter */
for(i = 0; i < MAX; i++)
for(j = 0; j < MAX; j++)
counter++;

/* return the counter's value */
return counter;
}

int main()
{
time_t start, end;
int val;

start = time(NULL);
do_work();
end = time(NULL);

printf("val = %f/n", difftime(end, start));

return 0;
}

5. linux中什么是时间片

时间片,简单来说就是CPU分配给各个程序的时间,使各个程序从表面上看是同时进行的,而不会造成CPU资源浪费。
时间片轮转调度中唯一有趣的一点是时间片的长度。从一个进程切换到另一个进程是需要一定时间的--保存和装入寄存器值及内存映像,更新各种表格和队列 等。
假如进程切换(process switch) - 有时称为上下文切换(context switch),需要5毫秒,再假设时间片设为20毫秒,则在做完20毫秒有用的工作之后,CPU将花费5毫秒来进行进程切换。CPU时间的20%被浪费 在了管理开销上。

6. linux下,记录响应时间的脚本,精确到毫秒ms

gettimeofday(取得目前的时间)
相关函数
time,ctime,ftime,settimeofday
表头文件
#include <sys/time.h>
#include <unistd.h>
定义函数
int gettimeofday ( struct timeval * tv , struct timezone * tz )
函数说明
gettimeofday()会把目前的时间有tv所指的结构返回,当地时区的信息则放到tz所指的结构中。
timeval结构定义为:
struct timeval{
long tv_sec; /*秒*/
long tv_usec; /*微秒*/
};
timezone 结构定义为:
struct timezone{
int tz_minuteswest; /*和Greenwich 时间差了多少分钟*/
int tz_dsttime; /*日光节约时间的状态*/
};
上述两个结构都定义在/usr/include/sys/time.h。tz_dsttime 所代表的状态如下
DST_NONE /*不使用*/
DST_USA /*美国*/
DST_AUST /*澳洲*/
DST_WET /*西欧*/
DST_MET /*中欧*/
DST_EET /*东欧*/
DST_CAN /*加拿大*/
DST_GB /*大不列颠*/
DST_RUM /*罗马尼亚*/
DST_TUR /*土耳其*/
DST_AUSTALT /*澳洲(1986年以后)*/
返回值
成功则返回0,失败返回-1,错误代码存于errno。附加说明EFAULT指针tv和tz所指的内存空间超出存取权限。
范例
#include<sys/time.h>
#include<unistd.h>
main(){
struct timeval tv;
struct timezone tz;
gettimeofday (&tv , &tz);
printf(“tv_sec; %d\n”, tv,.tv_sec) ;
printf(“tv_usec; %d\n”,tv.tv_usec);
printf(“tz_minuteswest; %d\n”, tz.tz_minuteswest);
printf(“tz_dsttime, %d\n”,tz.tz_dsttime);
}
执行
tv_sec: 974857339
tv_usec:136996
tz_minuteswest:-540
tz_dsttime:0

7. linux内核获取时间问题

1 tv_usec是微秒,变小是因为秒进位了,你要同时把秒输出就能看出来了
2 有个常量HZ 它和jiffies是互为倒数. 以前一直是100, 也就是1秒100下,就是1个j=10毫秒
如今也有更快的,比如1000.但是在用户空间,一直是100.

所以jiffies非常快,会容易溢出, 例如一个无符号整形存储秒,那么69年左右会溢出
毫秒的话要除1000, 不到一个月就溢出了.而电脑的运行时间是完全可以达到这么久不重启的.
jiffies_64就不用担心这个问题了.

3可参加linux/time.h中提供的api,精确到微秒

8. 求linux毫秒级定时器的实现

自己用多线程实现呗,如果不要求精确控制的话,只需要让新开的线程循环,每次循环sleep 300毫秒,然后触发主线程的处理

热点内容
dota2卡尔脚本 发布:2025-03-17 21:11:27 浏览:69
应用市场网站源码 发布:2025-03-17 21:09:46 浏览:411
linux怎么挂载 发布:2025-03-17 21:08:23 浏览:895
疫情数据库 发布:2025-03-17 20:58:00 浏览:669
excel怎么破解密码 发布:2025-03-17 20:49:32 浏览:359
v10系统电脑怎么连接服务器 发布:2025-03-17 20:43:39 浏览:985
如何给应用设密码是什么 发布:2025-03-17 20:32:25 浏览:472
欢迎访问河南工业大学 发布:2025-03-17 20:31:40 浏览:17
fw源码 发布:2025-03-17 20:13:17 浏览:65
java培训机构排行 发布:2025-03-17 19:59:53 浏览:588