[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   -
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. loupius Messages postés 789 Statut Membre 148
     
    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
  2. Flow31- Messages postés 90 Statut Membre 10
     
    Merci.

    maintenant je pourrai bien essayer de kill un processus,

    je vous tiens au courant !
    1
  3. Flow31- Messages postés 90 Statut Membre 10
     
    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
  4. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    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. Fred
       
      Non, sous Windows, on utilise depuis 20 ans l'api Win32 Kernel, jamais spawn()
      0
      1. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331 > Fred
         
        Pourquoi laisser la fonction alors si il ne faut pas l'utiliser ???
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. loupius Messages postés 789 Statut Membre 148
     
    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
  7. Flow31- Messages postés 90 Statut Membre 10
     
    J'utilise spawnlp() (meme si je suis pas au point avec les options de spawn() )

    une idée pour kill un processus ?!
    1
  8. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    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