Comment faire pour Frayer les Processus Enfants qui Ne Meurent pas avec le Parent?

J'ai un programme C++ qui agit comme un chien de garde sur les autres. S'il détecte qu'un processus n'est plus en cours d'exécution, il redémarre via system. Le problème est que si je tue le chien de garde de processus, les processus qu'il a commencé aussi à mourir.

void* ProcessWatchdog::worker(void* arg)
{
    //Check if process is running
    if( !processRunning )
        system("processName /path/to/processConfig.xml &");
}

L'enfant, le processus est démarré correctement et fonctionne sans aucun problème. Mais lorsque le parent (maintenant ce ProcessWatchdog processus) meurt, l'enfant meurt trop. Comment puis-je générer un processus enfant qui est totalement indépendant de la société mère?

J'ai essayé d'utiliser pclose et popen, l'exécution de scripts shell les processus, et quelques autres tactiques, mais en vain. Je suis ignorant SIGHUP signaux dans le processus enfants, mais ils continuent à mourir.

Donc, idéalement, je voudrais dire que le système de démarrer un processus qui est totalement indépendant de la société mère. Je veux de l'enfant trace à la fin, avec l'enfant, et pour elle de/le système n'ont aucune idée de qui ProcessWatchdog a commencé à en premier lieu.

Est-il un moyen pour que je puisse faire cela?

J'écris ceci en C++ sur Linux.

double possible de Faire de l'enfant le processus a engendré avec system() de continuer à courir après parent obtient tuer les signaux et les sorties
Je ne pense pas qu'à l'aide du système est une bonne idée....
Pourquoi ne pas utiliser un système une bonne idée? Outre les évidents problèmes de sécurité? Je fais cela sur un système embarqué dans un environnement très contrôlé, et je ne suis pas inquiet à propos erronés, les appels système. Est-il une autre raison que je devrais être prudent?
pour les questions de sécurité et si /bin/sh n'existe pas, vous allez avoir un certain genre de problème
merci pour l'info. Dans l'avenir, je vais faire attention, mais dans ce cas, le système est fermé et contrôlé, et la sécurité n'est pas un problème.

OriginalL'auteur zachd1_618 | 2013-07-11