[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.
    2
    1. Merci.

      maintenant je pourrai bien essayer de kill un processus,

      je vous tiens au courant !
      1
      1. 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
        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
          1. Non, sous Windows, on utilise depuis 20 ans l'api Win32 Kernel, jamais spawn()
            0
          2. Contributeur
            @FredPourquoi laisser la fonction alors si il ne faut pas l'utiliser ???
            0
        2. 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
          1. J'utilise spawnlp() (meme si je suis pas au point avec les options de spawn() )

            une idée pour kill un processus ?!
            1
            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