A voir également:
- Cron avec programme C
- Programme demarrage windows 10 - Guide
- Désinstaller programme windows 10 - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
- Forcer la fermeture d'un programme - Guide
- Sms programmé - Guide
6 réponses
SALUT A TOUS
J'ai fini par trouver, pour ceux que ça interresse, voici la procédure :
1) Créer un fichier temporaire ( comme l'a indiqué SKZ81) :
FILE *fp;
fp = fopen("/home/temporaire.cron", "w");
fwrite(fp, "ligne cron à rajouter");
fclose(fp);
2) Appeler en commande système le programme 'crontab' avec comme argument le fichier temporaire :
system( "crontab /home/temporaire.cron");
Au final, on obtient les lignes suivantes dans son code source en C :
FILE *fp;
fp = fopen("/home/temporaire.cron", "w");
fwrite(fp, "ligne cron à rajouter");
fclose(fp);
system( "crontab /home/temporaire.cron");
AU REVOIR ET A BIENTÔT
J'ai fini par trouver, pour ceux que ça interresse, voici la procédure :
1) Créer un fichier temporaire ( comme l'a indiqué SKZ81) :
FILE *fp;
fp = fopen("/home/temporaire.cron", "w");
fwrite(fp, "ligne cron à rajouter");
fclose(fp);
2) Appeler en commande système le programme 'crontab' avec comme argument le fichier temporaire :
system( "crontab /home/temporaire.cron");
Au final, on obtient les lignes suivantes dans son code source en C :
FILE *fp;
fp = fopen("/home/temporaire.cron", "w");
fwrite(fp, "ligne cron à rajouter");
fclose(fp);
system( "crontab /home/temporaire.cron");
AU REVOIR ET A BIENTÔT
Ha merde, j'était un peu dans le gaz...
Pour me rattrapper : à la fin, tu fais un
unlink("/home/temporaire.cron");
histoire de l'effacer.
Pour me rattrapper : à la fin, tu fais un
unlink("/home/temporaire.cron");
histoire de l'effacer.
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
11 avril 2005 à 15:15
11 avril 2005 à 15:15
Si ca peut t'aider, voilà ce que je ferais :
Pour une tâche planifiée, tu dois avoir une heure de départ, donc tu prend l'heure système au début de ton prog, puis si c'est une tache qui s'effectuee toute les Xminutes (ou heures, ...) tu lance une boucle infinie qui exécute à chaque fois ta tâche, et qui quand elle est terminée endors le programma pendant le temps X.
Sinon, si c'est pour une date donnée, eh bien tu peux comparer la date présente avec celle que tu souhaite et tu endors ton programme en fonction du temps trouvé.
@++
Pour une tâche planifiée, tu dois avoir une heure de départ, donc tu prend l'heure système au début de ton prog, puis si c'est une tache qui s'effectuee toute les Xminutes (ou heures, ...) tu lance une boucle infinie qui exécute à chaque fois ta tâche, et qui quand elle est terminée endors le programma pendant le temps X.
Sinon, si c'est pour une date donnée, eh bien tu peux comparer la date présente avec celle que tu souhaite et tu endors ton programme en fonction du temps trouvé.
@++
petite précision :
J'ai un programme qui doit s'exécuter tous les jours à une heure précise, il me suffirait de rajouter une ligne dans cron avec la commande crontab (procédure manuelle), mais je dois rajouter cette ligne à partir d'un programme en C car l'heure d'éxécution de la tache peut être modifiée à distance.
J'ai un programme qui doit s'exécuter tous les jours à une heure précise, il me suffirait de rajouter une ligne dans cron avec la commande crontab (procédure manuelle), mais je dois rajouter cette ligne à partir d'un programme en C car l'heure d'éxécution de la tache peut être modifiée à distance.
kij_82
Messages postés
4089
Date d'inscription
jeudi 7 avril 2005
Statut
Contributeur
Dernière intervention
30 septembre 2013
857
11 avril 2005 à 15:47
11 avril 2005 à 15:47
Je vois pas et je ne sais pas ce qu'est cron en plus alors..
Désolé, bonne chance ++
Désolé, bonne chance ++
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Si tu sais comment faire avec la console, disons en tapant la chaine :
COMMAND ARGUMENTS
(où commande est une commande shell ou un éxé et ARG.. ses arguments)
En C tu fais
system("COMMAND", "ARGUMENTS");
Ce qui éxécute la commande.
Sinon,
Dans les deux cas, si tu n'as pas les droits sur le fichier à modifier, c'est foiré d'avance !!
COMMAND ARGUMENTS
(où commande est une commande shell ou un éxé et ARG.. ses arguments)
En C tu fais
system("COMMAND", "ARGUMENTS");
Ce qui éxécute la commande.
Sinon,
FILE *fp; fp = fopen("/etc/cron.k", "a+"); // fichier bidon, ça dépend... fwrite(fp, "ligne à rajouter"); fclose(fp);
Dans les deux cas, si tu n'as pas les droits sur le fichier à modifier, c'est foiré d'avance !!
19 avril 2005 à 16:25
juste une petite précision sur ta solution : s'il y avait déjà des traitements planifiés dans la crontab, ils sont écrabouillés par ton programme. En effet, la commande "crontab [monFichier]" écrase le contenu actuel de la crontab par celui du fichier. Il faudrait que tu récupères dans un fichier le contenu de la crontab avant ton étape 1, en faisant par ex :
Ensuite, à ton étape 1 tu ouvres le fichier en modification et non plus en écriture, ce qui te permettra de rajouter simplement ta tâche à celles existantes dans le fichier, et le tout sera rechargé par ta commande à l'étape 2.