IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Lancer un programme en parralèlle


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5
    Par défaut Lancer un programme en parralèlle
    Bonjour,
    j'étais déjà venue solliciter vos conseils concernant la commande system().
    Aujourd'hui je suis de nouveau confrontée à un problème. Toujours depuis mon programme principal, j'ai besoin de lancer un programme qui ne rend jamais la main, qui tourne en permanence quoi. Donc la commande system est exclue. Mais je ne trouve pas de solution !?
    Pouvez vous m'aider ?

  2. #2
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Ca dépend de l'OS.

  3. #3
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Les threads.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5
    Par défaut
    Alors, je suis sous windows.
    J'avait finalement pensé aux threads aussi, mais mon tuteur a trouvé ça, je vais tester... _spawnl()
    Merci quand même pour vos réponses !

  5. #5
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Pour lancer un autre programme, les thread ne sont d'aucune utilité.
    _spawnl (ou autre dérivé POSIX) c'est une solution, mais note que la fonction commence par un underscore, ce qui indique que c'est spécifique au compilo. En Win32, ce sera plutot ShellExecute / CreateProcess / WinExec.
    http://c.developpez.com/faq/vc/?page...ead#ProcessNew

    Même avec system(), c'est jouable en utilisant la commande start.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5
    Par défaut
    merci beaucoup,
    je vais creuser tout ça..

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5
    Par défaut
    Re bonjour..
    Après avoir un peu tourné sur le net et tout pour trouver ma réponse, je reviens encore vers vous..
    J'ai voulu utiliser CreateProcess.
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    STARTUPINFO         siStartupInfo;
    PROCESS_INFORMATION piProcessInfo;
     
    memset(&siStartupInfo, 0, sizeof(siStartupInfo));
    memset(&piProcessInfo, 0, sizeof(piProcessInfo));
    siStartupInfo.cb = sizeof(siStartupInfo);
     
    char repProg[200];
    memset(repProg, 0, 200);
     
    printf("Je suis bien dans la boucle PROG\n");
     
    sprintf(repProg, "%s\\\\PROG\\\\prog_suppl.exe %s %s %s", repScript, argv[8], argv[9], argCompil);
     
    printf("Je lance la commande suivante : %s\n", repProg);
     
    if(CreateProcess(NULL,
    	repProg,0,0,FALSE,
            CREATE_DEFAULT_ERROR_MODE,0,0,                              
            &siStartupInfo,&piProcessInfo) == FALSE)
           {
    	// erreur
    	printf("Lancement de PROG ne fonctionne pas\n");
    	}
    du coté affichage j'obtiens :

    Je suis bien dans la boucle PROG
    Je lance la commande suivante : d:\\Julie\\ConfSta\\ConfStaFiles\\PROG\\prog_suppl.exe -c STA_AP_INTER_2.conf -i \Device\NPF_{746C747C-4A44-454B-A8CF-D76935913118} -d
    Lancement de PROG ne fonctionne pas

    Pouvez vous m'aider ?
    Est ce un problème d'arguments ?

  8. #8
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    La commande est fausse (si tu la copie-colle dans une console cmd.exe elle doit fonctionner) : tu as doublé les anti-slash dans la commande...
    Au passage, en C++, on utilise des stream. C'est plus fiable.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    std::ostringstream oss;
    oss << repScript << "\\PROG\\prog_suppl.exe "
        << argv[8] << ' ' << argv[9] << ' ' << argCompil;
    note aussi que si jamais il y avait un nom de répertoire avec un espace dans le chemin de ton exe ça ne marcherait plus. Il faut entourer le path par des guillemets.

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5
    Par défaut
    Oui merci
    en effet il ne fallait pas que je les double..
    Pour les stream, en fait je fais selon les préférences de mon tuteur :s

    Sinon ben ça y est, ça se lance bien, mais j'ai été surprise, je pensais (j'espérais) que mon programme se lancerait dans une autre fenêtre DOS, car du coup il m'est difficil de suivre les traces du programme principal !

    Est ce possible ? Ou bien j'en demande un peu trop ?

    Merci d'avance pour les réponses, et encore merci pour l'aide que vous m'avez déjà apporté !

  10. #10
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Non, c'est assez simple même : spécifie le flag CREATE_NEW_CONSOLE.

    Note que ce n'est pas de la programmation C/C++ à proprement parler ça, mais de la programmation Win32, spécifique Windows (il y a un forum dédié).

Discussions similaires

  1. Lancer un programme a la Fermeture de Windows
    Par sali dans le forum Windows
    Réponses: 2
    Dernier message: 01/07/2004, 22h54
  2. [LG]lancer un programme extérieur
    Par dsr57 dans le forum Langage
    Réponses: 3
    Dernier message: 07/01/2004, 18h41
  3. Lancer un programme au démarrage
    Par ludo_7 dans le forum Windows
    Réponses: 7
    Dernier message: 09/10/2003, 16h29
  4. Lancer un programme, mais sur une autre machine
    Par GOUGOU1 dans le forum Réseau
    Réponses: 12
    Dernier message: 08/12/2002, 20h36
  5. Réponses: 8
    Dernier message: 05/06/2002, 11h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo