#include #include #include #include #include /* define aby strptime nie krzyczało */ /* http://stackoverflow.com/questions/15334558/compiler-gets-warnings-when-using-strptime-function-c */ #define __USE_XOPEN #define _GNU_SOURCE void simple_run(char **command) { pid_t pid = fork(); if (pid == -1) { fprintf(stderr, "Can't fork, error %d\n", errno); exit(1); } if (pid == 0) { execvp(command[1],command+1); printf("Unkown command\n"); exit(0); } } int main(int argc, char *argv[]) { struct tm *planned; time_t p_rawtime; time(&p_rawtime); planned = localtime(&p_rawtime); /* "parsowanie" godziny */ //sscanf(argv[1],"%d:%d:%d",&planned->tm_hour, // &planned->tm_min,&planned->tm_sec); strptime(argv[1], "%H:%M:%S",planned); p_rawtime = mktime(planned); double diff_secs; while(1) { diff_secs = difftime(p_rawtime,time(NULL)); /* ile sekund do "deadline" :) */ if(diff_secs<0) { /* sprawdzamy czy termin nie minął */ planned->tm_mday++; /* dzień++ - lec do nast dnia */ p_rawtime = mktime(planned); //printf(ctime(&p_rawtime)); diff_secs=difftime(p_rawtime,time(NULL)); /* ile teraz sekund do "deadline" ? */ } //printf("ide spac na %.0lf sekund\n",diff_secs); sleep(diff_secs); //printf("wykonuje komende\n"); simple_run(argv+1); sleep(1); /* aby nie wykonalo sie kilka razy w sekunde */ } return 0; }