⑴ 在linux环境下c语言中如何让while循环执行固定的时间如200毫秒
...
楼上的想让你的程序变成悲剧...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;
}
⑵ C语言固定格式输出时间
完整代码如下所示:
#include<stdio.h>
#include<time.h>
intmain(intargc,char*argv[])
{
time_trawtime;
structtm*timeinfo;
chartimE[80];
time(&rawtime);
timeinfo=localtime(&rawtime);
strftime(timE,80,"%a%b%d%I:%M:%S%Y",timeinfo);
printf("Localtimeis:");
printf("%s",timE);
return0;
}
⑶ C语言能实现到某一固定时间才继续运行吗
虽然这个最终都跟确切的系统有关~不过......有localtime啊。
你通过struct tm声明一个变量,构造成你要的时间,然后mktime成time_t,减去当然的time(NULL),就是需要sleep的秒数~
⑷ C语言如何在每天固定时间执行某一函数,比如每天12点去执行(基于定时器setitimer和信号去处理)
不用定时器的,
写个处理的程序,然后操作系统做一个计划任务定时调用这个程序。
⑸ C语言如何控制程序运行的时间
利用定时器计数,
在程序中判断,如果超过指定时间,退出。
比如:
定时器设置1秒计数一次。
第一个程序,计数达到60秒,退出。
⑹ C语言中如何控制时间高手进!
这个时间的控制,用MFC可能更容易点,用经典C语言就比较麻烦,1楼说的对,可惜你看不懂.
所以你还是先不要考虑超时的情况,先写好程序再说
⑺ c语言时间限制
" 运行一个语句一段时间(如3分钟)。" --
这个语句 或程序块 需要 的执行 时间 是多少?
如果 这个 语句 或程序块 执行 需要 的 时间 长于 3 分钟,那么 这个 语句 或程序块 中 需要 嵌入 时间 测定 语句。
如果 时间 短于 3 分钟,你需要 加入 等待。
----------
等待函数:
void wait_ms ( int ms )
{
clock_t endwait;
endwait = clock () + ms;
while (clock() < endwait) {}
}
c 语言 时间:
clock_t t0, t1,t;
int dt;
dt = 3*60*1000; // 3分钟 == 毫秒数
if ( 满足条件了){
t0 = clock (); //开始时刻 毫秒
t1 = t0 + dt; //目标终止 时刻
这里执行语句或程序块,假定 时间 短于 3 分钟
t = t1 - clock (); // 等待时间 毫秒数
wait_ms(t); // 等待
}
===============
执行语句或程序块,假定 时间 长于 3 分钟 , 执行语句或程序块中要 嵌入:
t = clock();
比较 t 与 目标 t1 , if (t>=t1) 终止 程序。
===================================
一般这类程序 要用 c++ . 定时控制 用 timer ( 定时器) 或
运行 线程:
std::thread xc1 (foo,t0,3);
时间控制,到时间则 关闭线程。
⑻ C语言如何设置固定时间种子
计算机产生的随机数并不是真正随机的,所以叫
伪随机数。
当逗种子地固定时,它产生的随机数序列是不变的,例如产生10个数,这10个数大小是变化的,但只要用这个种子,每次产生的这10个数序列,是一模一样的。
用
srand(time(0));
设种子,就会因时间变化,得到不同的种子,那么随机数序列就会变化。
time(0)
是当前时间,(精度可能是毫秒)。只要两次跑程序启动时间差别
超过1毫秒,两个序列就不同了(随机)。如果,时间差别不到1毫秒,两个序列就没变化。
--------
错误的程序:
for
(i=0;i<5;i++){
srand(time(0));
//
5次的种子若不变
printf("%d
",rand());
//
依次取
5个序列的
第一个数
}
5个数不变化。
-------------------
正确的程序:
srand(time(0));
//
设1次种子
for
(i=0;i<5;i++){
printf("%d
",rand());
//依次取1个序列的第1到第5个随机数
}
5个数变化
⑼ C语言中如果实现--在某个固定时间执行某段特定代码
你就读取系统时间就可以了啊。
void gettime(struct date *t),t 存放得到的日期信息
例子:
#include <stdio.h>
#include <dos.h>
int main(void)
{
struct time t;
gettime(&t);
printf("The current time is: %2d:%02d:%02d.%02d",t.ti_hour,t.ti_min, t.ti_sec, t.ti_hund);
return 0;
}
⑽ C语言中的时间
以前实际上用过,很想对C语言中的时间函数了解多一点,趁着这个寒假,查了些资料,大概把我现在能用到的关于时间的操作在此记录下来。通过几个函数来熟悉C语言中对时间的操作。(注:以下程序均在VS2010上编译通过。)①time()函数。可以通过time()函数来获得日历时间。其原型为:time_ttime(time_t*timer);一般参数为空,返回值类型time_t是一个长整型数,函数将返回现在的日历时间,即从一个时间点(所有不同版本的VisualC++都是从1970年1月1日0时0分0秒)到现在的经过的秒数。例子程序:#include<stdio.h>#include<time.h>voidmain(){time_tlt;lt=time(NULL);printf("1970年1月1日0时0分0秒到现在经历了%ld秒\n",lt);}运行结果(结果与程序运行的时间有关,贴出我此时运行出的结果):1970年1月1日0时0分0秒到现在经历了1326975564秒请按任意键继续...②clock()函数。C语言中的计时函数。函数原型为:clock_tclock(void);clock()函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元数。返回值类型clock_t也是一个长整型数。在time.h头文件中定义了一个符号常量CLOCKS_PER_SEC,表示一秒钟会有多少个计时单元。所以通过简单的数学知识,可以知道在程序中用clock()/CLOCKS_PER_SEC来表示程序从开始到调用clock()函数时用了多少秒。例子程序:#include<stdio.h>#include<time.h>voidmain(){clock_tlt;for(inti=0;i<1000000000;i++);lt=clock();printf("循环执行1000000000个空操作需要%f秒\n",(double)lt/CLOCKS_PER_SEC);}运行结果(在不同的机器上运行的结果可能不一样,下面是在我自己的笔记本上运行的结果):循环执行1000000000个空操作需要3.484000秒请按任意键继续...③使用C库函数来显示日期和时间。首先要介绍一下C语言中的一个日期的结构体类型,tm类型。其在time.h中的定义如下:#ifndef_TM_DEFINEDstructtm{inttm_sec;inttm_min;inttm_hour;inttm_mday;inttm_mon;inttm_year;inttm_wday;inttm_yday;inttm_isdst;};#define_TM_DEFINED#endif然后可以介绍有关的函数了。time.h提供了两种不同的函数将日历时间(一个长整型数)转换成我们平时看到的把年月日时分秒分开的时间格式:structtm*gmtime(consttime_t*timer);structtm*localtime(consttime_t*timer);其中gmtime()函数是将日历时间转换为世界标准时间(即格林尼治时间),并返回一个tm结构体来保存这个时间,而localtime()函数是将日历时间转换为本地时间(在中国地区获得的本地时间会比世界标准时间晚8个小时)。例子程序:#include<stdio.h>#include<time.h>voidmain(){structtm*local;time_tt;t=time(NULL);local=localtime(&t);printf("现在北京时间是%d点\n",local->tm_hour);local=gmtime(&t);printf("世界标准时间是%d点\n",local->tm_hour);}运行结果(运行结果与运行的时间有关,我是在早上9点多钟运行这个程序的):现在北京时间是9点世界标准时间是1点请按任意键继续...这样子我们就可以完全才输出此刻的年月日时分秒了,当然需要逐个来输出。其实C库函数还提供了一个很有用的以固定的时间格式来输出年月日时分秒的函数。这两个函数原型如下:char*asctime(conststructtm*timeptr);char*ctime(consttime_t*timer);asctime()函数是通过tm结构来生成具有固定格式的保存时间信息的字符串,而ctime()是通过日历时间来生成时间字符串。这样下面的例子程序就容易理解了:#include<stdio.h>#include<time.h>voidmain(){structtm*local;time_tt;t=time(NULL);local=localtime(&t);printf(asctime(local));local=gmtime(&t);printf(asctime(local));printf(ctime(&t));}运行结果(我是在早上9点多运行这个程序的):FriJan2009:55:562012FriJan2001:55:562012FriJan2009:55:562012请按任意键继续...C语言还可以以我们规定的各种形式来规定输出时间的格式。要用到时可以查阅相关的资料,限于篇幅,就介绍到这里。④这里介绍计算持续的时间长度的函数。之前已经介绍了使用clock()函数的例子,它可以精确到毫秒级。其实我们也可以使用difftime()函数,但它只精确到秒。该函数的定义如下:doubledifftime(time_ttime1,time_ttime0);例子程序:#include<stdio.h>#include<time.h>#include<stdlib.h>voidmain(){time_tstart,end;start=time(NULL);for(inti=0;i<1000000000;i++);end=time(NULL);printf("这个循-环用了%f秒\n",difftime(end,start));}运行结果:这个循环用了3.000000秒请按任意键继续...⑤最后介绍mktime()函数。原型如下:time_tmktime(structtm*timer);可以使用函数将用tm结构表示的时间转换为日历时间。其返回值就是转换后的日历时间。这样我们就可以先制定一个分解时间,然后对这个时间进行操作。下面的例子用来计算2012年1月20日是星期几:#include<time.h>#include<stdio.h>#include<stdlib.h>intmain(void){structtmt;time_tt_of_day;t.tm_year=2012-1900;t.tm_mon=0;t.tm_mday=20;t.tm_hour=0;t.tm_min=12;t.tm_sec=1;t.tm_isdst=1;t_of_day=mktime(&t);printf(ctime(&t_of_day));return0;}运行结果:FriJan2000:12:012012请按任意键继续...