[c++] execl() / fermer un processus
Flow31-
Messages postés
90
Statut
Membre
-
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à tous !
j'ai deux trois questions de c++ :
j'utilise la fonction execl() pour ouvrir un programme : pas de problème, sauf qu'il me ferme l'ancien.
Comment faire pour que execl() ouvre le programme dans une autre fenêtre pour que celui-ci continue ?
Et comment faire pour fermer ce programme ? car là, il devra aller dans les processus le chercher, non?
Han je galère depuis ce weekend :/
Merci !
j'ai deux trois questions de c++ :
j'utilise la fonction execl() pour ouvrir un programme : pas de problème, sauf qu'il me ferme l'ancien.
Comment faire pour que execl() ouvre le programme dans une autre fenêtre pour que celui-ci continue ?
Et comment faire pour fermer ce programme ? car là, il devra aller dans les processus le chercher, non?
Han je galère depuis ce weekend :/
Merci !
Configuration: Windows XP Firefox 3.0.15
7 réponses
-
Les fonctions de type 'exec' (qui ne sont pas ISO) ont pour but de remplacer le programme existant par un autre; donc si l'on veut que le programme existant se poursuive il faut choisir une autre fonction.
Dès lors, il y a deux solutions:
- 'system' qui permet de lancer un autre programme, mais on attend alors la fin de ce programme pour poursuivre le programme principal,
- 'fork' qui permet de lancer un autre processus dans lequel on pourra alors lancer un autre programme.
Je ne parle pas des 'threads' qui ne sont pas une bonne solution à ce problème.
Bonne continuation. -
Merci.
maintenant je pourrai bien essayer de kill un processus,
je vous tiens au courant ! -
je suis tombé sur cette source :
#include <sys/types.h> switch(fork()) { case -1 : perror("Probleme fork); exit(1); case 0: //tu es dans le fils fais ce que tu veux execl ("C:\\Documents and Settings\\florian\\Mes documents\\lossbot\\bin\\Debug\\intro.exe",0); exit(1); defaut : }
et ... fork was not declared in this scope
J'utilise Codeblocks et je cherche de l'aide pour la déclarer...Merci -
Salut.
sous windows, utilise spawn à la place de exec. Regarde les doc sur MSDN.
Sous Linux fork() doit exister, il faut trouver où.
Sous Mac, HP, SUN, BSD etc. Je ne sais pas. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Ah oui, sous Windows, 'fork' n'existe pas.
Toutefois dans l'API tu dois avoir ces deux fonctions: CreateProcess et CreateThread.
Je n'en sais pas plus. -
J'utilise spawnlp() (meme si je suis pas au point avec les options de spawn() )
une idée pour kill un processus ?! -
Avec spawn tu doit avoir le numéro de processus. Après il doit bien exister une fonction. Cherche dans le MSDN, je ne connais pas. Sous Linux il y a kill() dans signal.h.