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 :

faire des "exec" sous windows


Sujet :

C

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 16
    Points : 8
    Points
    8
    Par défaut faire des "exec" sous windows
    je m'explique :

    je suis un habitué de la programmation C sous linux. j'utilisais des fonctions exec dans mes programmes C pour executer des fichiers.

    Maintenant je programme en C sous windows et j'aimerai executer des lignes de commandes se trouvant dans un fichier de conf.

    Comment fait-on sous windows pour executer des fichiers dans un programme C?

    Merci d'avance!

  2. #2
    Membre expérimenté
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Points : 1 727
    Points
    1 727
    Par défaut
    system() ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 57
    Points : 48
    Points
    48
    Par défaut
    L'API windows propose la fonction CreateProcess. Regarde MSDN.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    ce que je voudrais, c'est juste démarrer un executable dans windows du style :

    c:\Alex\prog-executable.exe

    dans un programme C.

    Existe-t-il une fonction plus simple? (vu que je n'ai pas besoin d'application mais juste de démarrer un executable.)

    merci.

  5. #5
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    system() est disponible avec la C Run-Time Library de Windows.
    Sinon, Windows met à disposition les fonctions CreateProcess() et ShellExecuteEx().
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    Merci pour vos reponses.

    Le programme que je developpe en C sous windows est une sorte d'easy php en ultra simplifié :

    - il doit permettre de lancer appache.
    - de l'arreter
    - de lancer mysql.
    - de l'arreter.
    - de lancer des pages web.

    on m'a conseillé d'utiliser les threads pour gérer ces differentes fonctionnalités. Cependant, j'ai l'impression que les threads ne fonctionnent que sous unix. De plus, je ne trouve pas de doc claire sur le net pour les threads. Enfin, existe-t-il un logiciel deja programmé du style easyphp avec un code opensource?

    Merci!

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Le multithreading est un moyen d'exécuter plusieurs fonctions simultanément dans le même processus.
    Mais pour lancer un autre exécutable, tu dois passer par les fonctions de création de processus sans attente : fork()/exec() sous unixoïde, _spawn(), CreateProcess() et ShellExecuteEx() sous Windows...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 16
    Points : 8
    Points
    8
    Par défaut
    merci Medinoc pour tes reponses.

    J'ai une nouvelle question :

    comment faire pour savoir si un processus a déjà été lancé??? (mon programme doit tester si les serveurs apache et mysql sont lancés et si ce n'est pas le cas, il devra lmes lancer.)

    merci d'avance!

  9. #9
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Sous unixoïde, aucune idée.
    Sous Win32, tu peux utiliser CreateToolHelp32Snapshot() et les fonctions associées pour rechercher un processus avec un exécutable d'un certain nom...


    Mais comme dans le cas présent il s'agit de serveurs, tu peux tout simplement essayer de t'y connecter...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/08/2006, 14h28
  2. Liste des programme ou applications sous windows xp
    Par bob40 dans le forum Windows XP
    Réponses: 1
    Dernier message: 12/01/2006, 02h14
  3. Réponses: 3
    Dernier message: 19/11/2004, 15h48

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