[英]wait for a time
我需要在特定時間啟動我的應用程序。 我不想從事玉米工作。 我的可執行文件是一個應用程序,喜歡從2011年1月20日開始運行,因此我必須以./app –2011年1月20日的日期運行它
這里的問題是,我將如何計算命令行選項中提供的當前和日期的時差。
我不想寫贏函數。 是否有任何內置函數可用於此類時差。 (c和Linux)
我知道您期望得到C
答案,但這可能會讓您感興趣:
既然你是在Linux上,該系統已經提供一種有效的方式來安排ponctual任務: at
在您的情況下,想要在20.01.2011上午8點運行任務的用戶只需輸入:
echo "./app" | at 08:00 20.01.2011
該任務將使用用戶的憑據運行。 需要注意的是at
同時接受相對時間指令,如at now +1 day
。 它是一個強大的工具,默認情況下隨大多數Linux發行版一起提供。
可以使用以下方式獲取計划的作業列表:
atq
您甚至可以使用以下方法刪除計划的作業:
atrm
希望這可以幫助。
您可以計算開始時間與現在之間的時差(以毫秒為單位),然后通過將該數字作為超時參數傳遞給select()
或epoll()
來等待這么多毫秒。
要計算差異,一種方法是先使用strptime()
將日期字符串轉換為struct tm
,然后將其傳遞給mktime()
,這將為您提供strptime()
unix紀元1970年1月1日00:00以來的秒數:00。 然后使用gettimeofday()
或clock_gettime()
獲取當前時間,它們還報告自unix紀元以來經過的時間。 將開始時間和當前時間轉換為秒,然后減去這些值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.