新聞中心
linux 中實(shí)現(xiàn)延遲45分鐘后執(zhí)行命令,寫了一段c程序,實(shí)現(xiàn)延遲,接下來,該如何執(zhí)行命令呢,也就是shell
1、system(執(zhí)行shell 命令)
武鄉(xiāng)ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
相關(guān)函數(shù) fork,execve,waitpid,popen
表頭文件 #includestdlib.h
定義函數(shù) int system(const char * string);
函數(shù)說明 system()會調(diào)用fork()產(chǎn)生子進(jìn)程,由子進(jìn)程來調(diào)用/bin/sh-c
string來執(zhí)行參數(shù)string字符串所代表的命令,此命令執(zhí)行完后隨
即返回原調(diào)用的進(jìn)程。在調(diào)用system()期間SIGCHLD 信號會被暫時
擱置,SIGINT和SIGQUIT 信號則會被忽略。
返回值 如果system()在調(diào)用/bin/sh時失敗則返回127,其他失敗原因返回-
1。若參數(shù)string為空指針(NULL),則返回非零值。如果system()調(diào)
用成功則最后會返回執(zhí)行shell命令后的返回值,但是此返回值也有
可能為system()調(diào)用/bin/sh失敗所返回的127,因此最好能再檢查
errno 來確認(rèn)執(zhí)行成功。
附加說明 在編寫具有SUID/SGID權(quán)限的程序時請勿使用system(),system()會
繼承環(huán)境變量,通過環(huán)境變量可能會造成系統(tǒng)安全的問題。
例如:
#includestdlib.h
main()
{
system(“l(fā)s -al /etc/passwd /etc/shadow”); //換成./test.sh 可執(zhí)行相關(guān)腳本
}
當(dāng)然也可以用管道或exec函數(shù)族來調(diào)用shell
在linux下,想用sleep函數(shù)實(shí)現(xiàn)延時五秒,應(yīng)該怎么設(shè)參數(shù)?
使用權(quán)限 : 所有使用者
使用方式 : sleep [--help] [--version] number[smhd]
說明 : sleep 可以用來將目前動作延遲一段時間
參數(shù)說明 :
--help : 顯示輔助訊息
--version : 顯示版本編號
number : 時間長度,后面可接 s、m、h 或 d
其中 s 為秒,m 為 分鐘,h 為小時,d 為日數(shù)
例子 :
顯示目前時間后延遲 1 分鐘,之后再次顯示時間 :
date;sleep 1m;date
這個命令更多應(yīng)用于shell腳本編程里和程序里
如下面的一段程序:
應(yīng)用程序:
復(fù)制代碼
代碼如下:
#include syswait.h
usleep(n) //n微秒
Sleep(n)//n毫秒
sleep(n)//n秒
驅(qū)動程序:
#include linux/delay.h
mdelay(n) //milliseconds 其實(shí)現(xiàn)
#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
調(diào)用asm/delay.h的udelay,udelay應(yīng)該是納秒級的延時
Dos:
sleep(1); //停留1秒
delay(100); //停留100毫秒
Windows:
Sleep(100); //停留100毫秒
Linux:
sleep(1); //停留1秒
usleep(1000); //停留1毫秒
每一個平臺不太一樣,最好自己定義一套跨平臺的宏進(jìn)行控制
秒還是微秒?關(guān)于延時函數(shù)sleep()
因?yàn)橐獙懸欢未a,需要用到sleep()函數(shù),在我印象中,sleep(10)好像是休眠10微秒,結(jié)果卻是休眠了10秒(在Linux下)。覺得很奇怪,因?yàn)轭^兒也記得好像是微秒為單位的。所以就查了一下。
原來linux下的sleep函數(shù)原型為:
unsigned int sleep(unsigned int seconds);
而MFC中的Sleep函數(shù)原型為:
void Sleep(DWORD dwMilliseconds);
也就是說,Linux下(使用的gcc的庫),sleep()函數(shù)是以秒為單位的,sleep(1);就是休眠1秒。而MFC下的sleep()函數(shù)是以微秒為單位的,sleep(1000);才是休眠1秒。原來如此啊。而如果在Linux下也用微妙為單位休眠,可以使用線程休眠函數(shù):void usleep(unsigned long usec);當(dāng)然,使用的時候別忘記#include system.h哦。
另外值得一提的是,linux下還有個delay()函數(shù),原型為extern void delay(unsigned int msec);它可以延時msec*4毫秒,也就是如果想延時一秒鐘的話,可以這么用 delay(250);
linux計(jì)劃任務(wù)如何實(shí)現(xiàn)延時執(zhí)行腳本,求簡潔實(shí)例
兩個方法:
1)crontab中的時間設(shè)定最小可以到分鐘,如果你的延時是分鐘級別的,直接放大crontab中的分鐘設(shè)定即可。
2)修改腳本,在腳本開頭(當(dāng)然要在shell聲明語句如#!/bin/bash之后)加usleep(微秒級)或sleep命令(秒級),也可以實(shí)現(xiàn)延時。
linux 延遲任務(wù):45分鐘以后執(zhí)行一段命令
首先你自己應(yīng)該能夠?qū)㈥P(guān)閉“多看”的命令列出,既然這樣的話,你就可以將此寫入一個腳本!這個完成后,chmod +x 腳本名 接下來就可以執(zhí)行:
crontab -e (用來執(zhí)行定時任務(wù))
輸入以下內(nèi)容:
*/45 * * * * ./(你的腳本)
就可以沒45分鐘執(zhí)行一次你的腳本即你的命令;
文章題目:linux延時循環(huán)命令 linux延時重啟命令
本文路徑:http://www.ef60e0e.cn/article/doichgd.html