Accueil > Forum > > > > killer un processus pére sans perdre le fils
killer un processus pére sans perdre le fils
mardi 1 août 2006 à 15:39:55 |
killer un processus pére sans perdre le fils

nander
|
bonjour! je cherche a faire un petit programme de mise a jours de mes application. mon application principale lance mon programme qui kill a lors son pére (l'application principale). Mon probleme est que lorsque l'on kill un pere on kill aussi tout ses fils. j'ai essayer d'appeller mon prog de MAJ avec la cmd system(). sinon j'ai vue que je pouvais utilisé une des fonctions exec(). mais es ce que le fichier executable de mon programme principal pourra etre remplacé si j'utilise cette commande. car il est impossible de remplace un fichier en cour d'utilisation.
|
|
mercredi 2 août 2006 à 10:39:06 |
Re : killer un processus pére sans perdre le fils

Guillemouze
|
ca depend si tu utilise des processus legers( thread) ou lourds (fork()). je pense pas que tu puisse avec des threads, mais j'en suis pas sur
|
|
mercredi 2 août 2006 à 12:27:29 |
Re : killer un processus pére sans perdre le fils

nander
|
Ni l'un Ni l'autre
j'ai realisé un programme totalement a part et je l'execute dans mon programme pere grace a l'appel a la fonction systeme() ou exec(). mon programme de mise a jour (le fils) commence par killer sont pere (le prog a mettre a jour) et apres il ne fait plus rien alors que le code devrait continuer par la copie d'un fichier depuis un repertoire source vers un repertoire destination fournie en parametre.
|
|
mercredi 2 août 2006 à 13:56:19 |
Re : killer un processus pére sans perdre le fils

Guillemouze
|
apparament, exec remplace le processus courant par celui passe en parametre de la fonction. donc par exemple si dans le programme P1 tu fais un exec(P2), alors P2 prend le PID de P1. donc si tu kill P1 a partir de P2, tu ne fait que killer P2 en fait (je sais pas si je suis tres clair!).
donc si j'azi bien compris ce que tu veu faire, tu a juste pas besoin de killer P1, vu qu'il se termine au lancement de P2!!!
Extrait de la manpage de execve:
En cas de réussite, execve() ne revient pas à l'appelant, et les
segments de texte, de données, ainsi que la pile du processus appelant sont
remplacés par ceux du programme chargé.
Le programme invoqué hérite du PID du processus appelant
|
|
mercredi 2 août 2006 à 14:02:55 |
Re : killer un processus pére sans perdre le fils

nander
|
oui effectivement j'ai vue ca ce midi aussi donc je vais esseyer de faire un exec sans killer de processus et je vais voir si je peut remplacer mon executable comme ca merci guillemouze
|
|
mercredi 2 août 2006 à 15:14:18 |
Re : killer un processus pére sans perdre le fils

nander
|
bon voici le bout de code quui lance mon appli de mise a jour : ---------------------------- char cmd[50]; sprintf(cmd,"%SMAJ.exe",Application-> getRepAppli()); //Application-> getRepAppli() renvoi le repertoire de l'application printf("%s",cmd); // affiche /Users/nander/Desktop/lanceur/trunk/macos/appli/build/Debug/MAJ.exe execl(cmd,"MAJ.exe",RepTemp,Application-> getRepAppli()); -----------------------------
le probleme c que la fonction execl revient toujours dans le code appelant. le MAJ.exe est bien dans le bon repertoire. il attend en argument le chemin du repertoire source et en 2eme argument le repertoire de destination.
|
|
mercredi 2 août 2006 à 15:37:34 |
Re : killer un processus pére sans perdre le fils

MuPuF
|
Lol, y'a bien plus simple que ça, tu ouvres MAJ.exe avec shellexecute et tu quitte ton exe toi meme. Je te jure que ça marche ;-) 
|
|
mercredi 2 août 2006 à 15:44:46 |
Re : killer un processus pére sans perdre le fils

nander
|
merci mais si tu regarde bien on est dans la partie reservée à linux donc mon code est fait pour tourner sous unix et visiblement shellexecute ne fonctionne pas sous unix!!
|
|
mercredi 2 août 2006 à 15:53:42 |
Re : killer un processus pére sans perdre le fils

Guillemouze
|
c bizare, dans ce que j'ai marsque plus haut, il y a :
Extrait de la manpage de execve: En cas de réussite, execve() ne revient pas à l'appelant
Ca veut peut etre dire que la commande a echouée?
essaye de faire ca dans ton prog: ... printf("avant exec\n"); exec("progtest"); // je connai pas exactement la synthaxe, mais le but est d'executer un prog test printf("apres exec\n");
...
et ton progtest du genre
main(...) { printf("prog test\n"); return 0; }
et verifie, si tt se passe comme prevu il devrait te mettre >avant exec >prog test
et c'est tout. sinon ya un pb kekpart
|
|
mercredi 2 août 2006 à 15:59:17 |
Re : killer un processus pére sans perdre le fils

MuPuF
|
ouille dsl  impossible d'executer un programme sans être le pere de celui çi ? Spécial comme truc quand meme ...
|
|
Cette discussion est classée dans : programme, application, kill, fils, pére
Répondre à ce message
Sujets en rapport avec ce message
Processus [ par ToToL ]
BonjoursJ'ai un programme en mode : console application.j'aimerai savoir comment voir si mon application est déjà lancée ou non. s'il y a plusieurs me
Application en C++ Lancement de programme [ par BARA_Marie ]
Jean-LucCaomment puis je empêcher une application en c++ de se recharger une deuxième fois si elle l'est déjà. ?Et comment faire lorsque je lance une
Tâche de fond: comment communiquer avec l'utilisateur? [ par vychnou ]
Bonjour à tous !Voici mon problème:je code un petit programme qui marche comme un supplément pour une grosse application.En clair, l'utilisateur est e
Détecter une erreur dans un process ? [ par chuckboy ]
Bonjour à tousJe cherche à détecter une erreur dans un process externe.J'explique , je lance un process "CreateProcess(NULL, (LPTSTR)sExecutable.c_str
shellExecute [ par vincelefou ]
Bonjour, J’aimerai faire un petit programme (en C + API) permettant de lancer une application en lui transmettant des paramètres. C’est possible avec
Un programme qui en créé un autre. [ par darkdidi ]
Bonjour!Je voudrais savoir comment faire un programme qui créé une application en prenant en compte des parametres de la part de l'utilisateur.Voici c
J'ai besoin qu'on me programme une bete application [ par Misterover ]
Salut a tous,J'aurai besoin qu'on me programme un bete programme de compte a rebours.Je le lance, je choisis une duree (en heures) et une fois le nomb
Deploiment de programme fait avec VC8 [ par moumouteb ]
Bonjour. Je viens de me rendre compte que tous les programmes que je compile avec VC8 marchent très bien chez moi mais dès que je les exécute sur un a
fermer une application exterieur au programme [ par moumouteb ]
Bonjour, Existe une fonction pour fermer un programme en cour d'exécution? Un peu comme WinExec permet de les ouvrir. merci
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|