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

Fermé
Flow31- Messages postés 84 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 10 avril 2013 - 3 nov. 2009 à 13:21
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 4 nov. 2009 à 16:27
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 !
A voir également:

7 réponses

loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
3 nov. 2009 à 13:59
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
Flow31- Messages postés 84 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 10 avril 2013 10
3 nov. 2009 à 14:07
Merci.

maintenant je pourrai bien essayer de kill un processus,

je vous tiens au courant !
1
Flow31- Messages postés 84 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 10 avril 2013 10
4 nov. 2009 à 11:57
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
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
4 nov. 2009 à 12:05
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()
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298 > Fred
4 nov. 2009 à 16:27
Pourquoi laisser la fonction alors si il ne faut pas l'utiliser ???
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
4 nov. 2009 à 12:36
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
Flow31- Messages postés 84 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 10 avril 2013 10
4 nov. 2009 à 14:14
J'utilise spawnlp() (meme si je suis pas au point avec les options de spawn() )

une idée pour kill un processus ?!
1
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
4 nov. 2009 à 14:41
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