[c++] execl() / fermer un processus

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 !
Configuration: Windows XP
Firefox 3.0.15

7 réponses

  1. 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.
    1. Contributeur
      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.
      1. J'utilise spawnlp() (meme si je suis pas au point avec les options de spawn() )

        une idée pour kill un processus ?!
        1. 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.
          1. Contributeur
            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.
            1. Non, sous Windows, on utilise depuis 20 ans l'api Win32 Kernel, jamais spawn()
            2. Contributeur
              @FredPourquoi laisser la fonction alors si il ne faut pas l'utiliser ???
          2. 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
            1. Merci.

              maintenant je pourrai bien essayer de kill un processus,

              je vous tiens au courant !