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 :

Comment faire pour executer le reste du script si une des fonction bloc


Sujet :

C

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut Comment faire pour executer le reste du script si une des fonction bloc
    Bonjour,

    J'ai réalisé un programme qui exécute un exécutable externe par la biais de la fonction "systeme()".

    Le soucie est que certaines fois, ce programme externe se fige et ne fais plus rien. Ce programme externe s'appelle "Xcmd.exe" (c'est un remote controle en ligne de commande). J'aimerai savoir comment faire pour mettre une genre de temporisation à la commande système qui lui dirai si celui ci n'a pas fini ca tâche après quelques seconde, passé à la suite...

    Voici ma fonction qui utilise Xcmd.exe :

    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
    26
    27
    28
    29
    #include <string.h> 
    #define TAILLE_COMMANDE 512
     
    int scan(const char *ip)
    {
        char commande [TAILLE_COMMANDE];
     
        // On créer notre futur commande ms_dos (Xcmd)  
        strcpy(commande, "xCmd.exe \\\\");
        strcat(commande, ip);
        strcat(commande, " /NOWAIT /HIGH /D:%SystemRoot%\\temp "); // Don't wait for remote process to terminate, High priority class, Set working directory
        strcat(commande, "\""); // Pour prendre en compte toute la commande à executer dans Xcmd
        strcat(commande, "MD temp & CD temp &"); // Création d'un dossier et aller dedans
        strcat(commande, " START \\\\Akffs10\\UNIX\\AFN\\install_OCS_inventory\\ocs-ng\\OCSInventory.exe /SERVER:AKF1118.***.*****.int"); // Executer l'application à distance
        strcat(commande, "\""); // Pour prendre en compte toute la commande à executer dans Xcmd
        int result_xcmd=system(commande); // execution de la commande
     
        system("echo.");
     
        // Test si toutes les manipulations se sont bien déroulés
        if (result_xcmd==0)
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    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 379
    Points : 41 572
    Points
    41 572
    Par défaut
    Il n'y a aucun moyen standard.

    Donc, précise ta plate-forme (généralement un système unixoïde (POSIX) ou Windows) et on t'indiquera les fonctions appropriées.
    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.

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    Mon application tourne sous windows

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    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 379
    Points : 41 572
    Points
    41 572
    Par défaut
    Dans ce cas, tu dois utiliser la fonction CreateProcess().
    Ensuite, tu pourras faire un WaitForSingleObject() sur le handle du processus créé pour l'attendre avec un timeout, et tu pourras récupérer sa valeur de retour avec GetExitCodeProcess().
    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.

  5. #5
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    euh, j'ai oublié de la dire, je suis un super débutant en C !

    Aurais tu des exemple d'application ?

  6. #6
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    pas plus d'explications ou exemple ?

  7. #7
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    help !

    Après de nombreuses recherche, je n'arrive pas à implémenté la solution proposé ! Mon exécutable plante assez souvant et cela est très gênant car je dois le redémarrer à la main !

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    la seule solution potable est de lancer ton programme en tache de fond (je ne sais as si mettre un '&' a la fin de la ligne marche ss Windows), et de faire ensuite un while en verifiant a) le nombre de secondes et b) si le programme s'est fini entre temps..
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/04/2009, 15h26
  2. Comment faire pour exécuter un job coté serveur à la demande de l'utilisateur
    Par DEV-10 dans le forum Développement Web en Java
    Réponses: 6
    Dernier message: 13/11/2006, 16h39
  3. Réponses: 1
    Dernier message: 05/10/2006, 17h21
  4. Réponses: 1
    Dernier message: 13/05/2006, 10h24
  5. JButton comment faire pour qu'il reste enfoncé
    Par fievel dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 28/03/2006, 20h25

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