导航:首页 > 操作系统 > linuxc语言定时

linuxc语言定时

发布时间:2024-05-08 15:13:44

linux下C语言有没有定时调用的函数


你是指延迟函数还是定时调用,比如到11:12:13秒执行某个函数?

如果是延时函数用

usleep(usec);//微妙
sleep(sec);//秒

如果是定时执行的话,你只能开个线程或while,每隔1s判断下当前系统时间,

structtm*ptm;
longts;
inty,m,d,h,n,s;

ts=time(NULL);
ptm=localtime(&ts);

y=ptm->tm_year+1900;//年
m=ptm->tm_mon+1;//月
d=ptm->tm_mday;//日
h=ptm->tm_hour;//时
n=ptm->tm_min;//分
s=ptm->tm_sec;//秒

照着上面的格式组成字符串进行判断,到点了就执行就可以了

Ⅱ 在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;
}

Ⅲ linux 中实现延迟45分钟后执行命令,写了一段c程序,实现延迟,接下来,该如何执行命令呢,也就是shell

1、system(执行shell 命令)
相关函数 fork,execve,waitpid,popen
表头文件 #include<stdlib.h>
定义函数 int system(const char * string);
函数说明 system()会调用fork()产生子进程,由子进程来调用/bin/sh-c
string来执行参数string字符串所代表的命令,此命令执行完后随
即返回原调用的进程。在调用system()期间SIGCHLD 信号会被暂时
搁置,SIGINT和SIGQUIT 信号则会被忽略。
返回值 如果system()在调用/bin/sh时失败则返回127,其他失败原因返回-
1。若参数string为空指针(NULL),则返回非零值。如果system()调
用成功则者派最后会返回执行shell命令后的返回值,但是此返回值也有
可能为system()调用/bin/sh失败所返回的127,因此最好能再检查
errno 来确认执行成功。
附加说明 在编写具有SUID/SGID权限的程序时请勿使用system(),system()会
继承环境变量,通亩嫌慧过环境变量可能会造成系统安全的问题。

例如:
#include<stdlib.h>
main()
{
system(“ls -al /etc/passwd /etc/shadow”); //换成./test.sh 可执行相关脚本
}

当然也可以用管道或exec函数族来调用迅答shell

Ⅳ linux系统 下 如何让C语言sleep()函数等待时间小于1秒

sleep()函数大概只能精确到50ms左右,你用sleep(10)是肯定不行的,如果你要精确的定时的话可以使用QueryPerformanceFrequency()函数,用法为:
LARGE_INTEGER litmp;
LONGLONG QPart1,QPart2;
double dfMinus, dfFreq, dfTim;
QueryPerformanceFrequency(&litmp);
dfFreq = (double)litmp.QuadPart;// 获得计数器的时钟频率
QueryPerformanceCounter(&litmp);
QPart1 = litmp.QuadPart;// 获得初始值
do
{
QueryPerformanceCounter(&litmp);
QPart2 = litmp.QuadPart;//获得中止值
dfMinus = (double)(QPart2-QPart1);
dfTim = dfMinus / dfFreq;// 获得对应的时间值,单位为秒
}while(dfTim<0.001);
其定时误差不超过1微秒,精度与CPU等机器配置有关。

×××××××××××××××××××××××××

sleep()函数的中等待时间是以毫秒计算的,所以等待1秒就是sleep(1000),如果要让等待时间小于一秒,那么就让传入的参数小于1000就行了.
比如,等待0.1秒:
sleep(100);

阅读全文

与linuxc语言定时相关的资料

热点内容
安卓清楚缓存命令 浏览:378
汽车压缩机电磁离合器损坏怎么修 浏览:505
怎么提取安卓软件 浏览:593
单片机和主机高速传文件 浏览:476
男生直发加密需要剃光头吗 浏览:823
qtdesignerlinux 浏览:429
命令的几要素 浏览:932
代理服务器地址怎么知道 浏览:170
汉语命令形 浏览:193
ACG官网下载的游戏怎么解压 浏览:963
stata交叉项命令 浏览:470
程序员老公烫头 浏览:692
服务器文件地址格式 浏览:131
securecrtandroid 浏览:176
短字符串压缩 浏览:863
u盘插入后显示加密格式化 浏览:944
我的世界怎么用命令方块获得超级武器 浏览:382
狗语翻译器app链接怎么下 浏览:905
选择排序算法的流程图 浏览:883
如何对文件夹开启共享 浏览:527