Identifier et stopper un processus trop long
Bonjour à tous,
Ma question est très simple, j'ai un processus dans une fonction C++, qui peut durer trop longtemps dans certains cas (ce que je vous donne est juste une version simplifiée).
Je souhaite donc arrêter ce processus lorsqu'il dure plus de X secondes, mais pour cela je dois évaluer le temps moyen de ce processus.
J'utilise pour cela la fonction suivante, où le processus en question est un simple "HELLO".
Malheureusement le compteur me donne systématiquement (lasttime =) zéro à la fin, même si le processus est plus long.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
void test(){
int pid = 0;
double lasttime=0;
int status = 0;
pid = fork();
if( pid == 0 ){
system("echo HELLO");
}
else {
int counter = 0;
while (1)
{
counter++;
if( counter > lasttime ) lasttime = counter;
if (waitpid(pid, &status, 0) == pid) break;
}
}
return;
} |
Je dois faire un truc faux quelque part, est ce que vous voyez mon erreur ?
En vous remerciant d'avance,
Xavier