我想寫一個定期執行一些任務的C程序(比如說,在控制檯上打印某些東西)。Linux中的定期任務
我已經使用nanosleep如下實現它。每500ms函數'func'被調用。
#include <stdio.h>
#include <time.h>
void func(void);
int main()
{
struct timespec mytimespec;
mytimespec.tv_sec = 0;
mytimespec.tv_nsec = 500000000; /* 500 ms */
while(1)
{
func();
nanosleep(&mytimespec,NULL);
}
return 0;
}
void func(void)
{
printf("This would be printed periodically\n");
}
上述工作正常。但是我有些疑惑: -
難道準確地工作,如果有多個線程和一個線程依賴於
nanosleep
做週期性任務?有沒有辦法在linux中產生週期性線程?或者,使用一些定時器回調?
爲什麼不使用Cron? http://unixhelp.ed.ac.uk/CGI/man-cgi?crontab+5 –
@Ed Heal:謝謝。其實我想學習C/C++的做法。 –
@Siddhartha Ghosh你應該指定這個線程的性質,導致機制應該由任務決定。 – Maquefel