導航:首頁 > 操作系統 > 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語言定時相關的資料

熱點內容
python模塊打包 瀏覽:360
騰訊雲伺服器centos沒有桌面 瀏覽:890
冒泡排序演算法實驗心得 瀏覽:686
php入侵教程 瀏覽:102
航電伺服器地址 瀏覽:23
pdf是撒 瀏覽:487
五格數學演算法 瀏覽:170
伺服器怎麼添加連接 瀏覽:15
排列組合a演算法 瀏覽:983
伺服器迷你號是什麼 瀏覽:778
有什麼免費的雲伺服器地址 瀏覽:575
微信為什麼總是連接伺服器失敗 瀏覽:642
伯里曼手pdf 瀏覽:769
從程序員轉行做機械 瀏覽:532
加密密碼鎖多少錢 瀏覽:608
電腦主機域名和伺服器怎麼綁定 瀏覽:705
python數據單位統一減小 瀏覽:325
ftp伺服器架設linux 瀏覽:316
生成直線演算法中最快的 瀏覽:689
頭頂加密小妙招 瀏覽:60