Appel de execv ou system depuis un thread.
Bonjour,
Je viens de remarquer un phénomène bizarre qui me laisse perplexe.
J'ai une application multithread en C++ sous linux dont l'un des thread exécute des procédures secondaires de manière périodique. L'une de ces procédure démarre un démon si il n'a pas encore été démarré. Le démon est bien démarré mais il m'est impossible de le killer après coup.
Threads:
____________ thread principal
|________ thread secondaire (qui lance le démon)
...
|________ autre thread
Démarrage du démon:
Code:
system(telnetd); // par exemple
ou
Code:
1 2 3 4 5 6 7 8 9 10 11
| int pid = fork();
if (pid < 0)
{
std::cout << "Fail to fork." << std::endl;
}
else if (pid == 0)
{
char *argv[] = { "telnetd", NULL };
execv("/usr/bin/telnetd", argv);
_exit(EXIT_FAILURE);
} |
Est ce que ce problème vous dit quelque chose? Est-il impossible d’exécuter un programme depuis un autre thread? Est-ce que je fais quelque chose de travers?