Programmation.c : Cron ou sleep() ?
Posté par Ludovic Rivallain (aka Creasy) (page perso, ) le 17 mars 2008Bonjour,
Je me colle d'ici peu au codage d'un petit programme qui vérifiera chaque minute la correspondance entre l'heure actuelle et l'heure de réveil demandée par des utilisateurs d'un service téléphonique basé sur Asterisk (info placée dans un fichier).
J'avais déjà le même programme codé avec les pieds et en bash (vite fait, bien fait fonctionnel, mais comme le nombre d'utilisateurs explose, j'ai décidé de le recoder en C (et avec les mains cette fois) pour réduire le temps d'exécution et limiter la consommation de performances.
Avant j'utilisais cron pour lancer chaque minute ce petit script.
J'en viens à ma question:
Est-il plus "performant" d'utiliser cron pour ce genre de tâche (lancer le programme toutes les minutes) ou d'utiliser un "sleep()" dans le programme (qui sera lancé en daemon du coup) avec un temps de repos variable selon le temps qu'a duré l'exécution?
(non je ne cherche pas à créer un nouveau troll cron Vs sleep() ;-) )
Et quels sont les avantages/inconvénients de ces deux solutions?
En gros si j'utilisais "sleep()" j'imagine un truc comme:
- Exécution du programme,
- Juste avant la fin on regarde qu'elle heure il est et on en déduis le temps qu'il reste jusqu'à la prochaine minute,
- On patient le temps calculé,
- On reboucle en "1".
Merci d'avance pour vos lumières.
Ludo,
> Lire le message (13 commentaires, moyenne: 2,5).
Vous avez demandé le commentaire #914335.



at ?
> Je me colle d'ici peu au codage d'un petit programme qui vérifiera chaque minute la correspondance entre l'heure actuelle et l'heure de réveil demandée par des utilisateurs d'un service téléphonique basé sur Asterisk (info placée dans un fichier).
Ce n'est pas à ça que sert la commande "at" ?
(cf par ex http://formation-debian.via.ecp.fr/ch46.html#id2606193)
[^]Re: at ?
Ca pourrait, mais je me vois mal créer autant de tâches "at" que d'utilisateurs ayant demandé un réveil.
100 utilisateurs = 100 tâches en attente...
Et puis ça impliquerai de revoir d'autres choses que le programme qui fait la vérification: interface web, générateur de fichier et/ou d'enregistrement.