Bonjour,
en C
system("c:\travail\test.exe 123"); /* cet appel peut prendre du temps */
je veux arrêter le traitement si le temps dépasse certains temps
comment ajouter un timeout à ce code?
Merci
Version imprimable
Bonjour,
en C
system("c:\travail\test.exe 123"); /* cet appel peut prendre du temps */
je veux arrêter le traitement si le temps dépasse certains temps
comment ajouter un timeout à ce code?
Merci
Ce que tu demandes n'est pas du ressort du C, mais plutôt de l'OS que tu utilises (d'où l'appel à system).
Sous windows:
Il faut lancer test.exe dans un processus, surveiller ce processus et le tuer s'il prend trop de temps.
cf CreateProcess
alarm permet de déclencher un signal (SIGALARM) au bout d'un certain temps.
Il suffit d'attrapper le signal (installer un handler de signal) pour être réveillé au bout de ce délai.
aaaaah, ça va améliorer ma culture Unix/linux... merci :ccool:
Apparemment, sous Visual C, signal/alarm n'est pas une solution envisageable.
signal a l'air à peine implémenté et alarm pas du tout !
Juste une clarification, quand je dis :
Je pense aux fonctions genre system, CreateProcess, etc. qui font appels aux fonctionnalités de l'OS (cf API win32) et qui ne sont pas C au sens "propre".Citation:
Ce que tu demandes n'est pas du ressort du C
Mais pas alarm(), et l'ensemble de signaux exigés par c99 est vachement restreint par rapport à POSIX.