Exécution de tâche a une date précise en C

Résolu
Deave - 27 août 2023 à 16:50
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 - 29 août 2023 à 16:21

Bonjour,


J'aimerais écrire un code qui exécute un programme à une date et heure bien précis en language C avec le moins de ligne possible, étant débutant j'aimerais avoir votre avis afin d'etre le plus léger possible.

Exemple : si la date du jour et le 00/00/0000 et que l'heure et 12:00 alors on exécute un processus sinon on fait une boucle infinie jusqu'à la bonne date et heure.

J'utilise code blocks comme IDE.

Merci pour votre retour

Cordialement

3 réponses

Regardes la fonction time().

Pour la boucle "infinie", regardes la fonction sleep()

Si tu peux calculer la différence des deux temps, tu pourrais faire un sleep de plusieurs secondes pour économiser du temps CPU

0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
28 août 2023 à 10:35

Salut Deave,

Le plus léger est juste de programmer ce que doit faire ton programme et de laisser le soin à ton système d'exploitation de le lancer à la date et heure souhaitée.

La façon de faire cela avec le système d'exploitation dépend du système d'exploitation concerné.

Sous Windows, c'est avec le "Planificateur de tâches"

https://support.microsoft.com/fr-fr/office/g%C3%A9rer-les-t%C3%A2ches-dans-le-planificateur-ee61ecb0-a0bb-4c39-8682-f47fe7674f05

0
mariam-j Messages postés 1033 Date d'inscription mercredi 9 mars 2022 Statut Membre Dernière intervention 26 avril 2024
28 août 2023 à 11:18

Bonjour,

Le blème, c'est que ton prog en C, qui va le lancer ?

0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 28 août 2023 à 19:01

il peut être lancé à la main ou au démarrage du système, par exemple.

D'autres problèmes avec l'approche de Deave:

  • le programme consomme des ressources mémoire et CPU pour rien
  • une fois lancé, il peut être fermé par l'utilisateur et ne sera pas en fonctionnement lorsque la date et heure arriveront

La recommandation de Pierrot est très importante, car un programme qui ne fait rien d'autre que boucler à l'infini, s'il est mal fait et ne prend pas en compte sa recommandation, va consommer toutes les ressources CPU du coeur sur lequel il est lancé en bouclant à toute vitesse en attendant que la date et heure arrive.

Le CPU a autre chose à faire, et tous les systèmes d'exploitation ont un moyen de programmer ou planifier le lancement de programmes (sous Linux, et MacOS je pense, c'est "cron").

0
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749 > [Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024
Modifié le 29 août 2023 à 16:23

Bonjour

  • Effectivement, sous Linux on utiliserait cron ou fcron pour répéter une tâche arbitraire à un moment précis (par exemple toutes les heures). Si on veut juste retarder une tâche, on utiliserait at.
  • Si on veut s'affranchir du système d'exploitation, comme suggéré précédemment, on endormirait le programme avec la fonction sleep.

Bonne chance

0