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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    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 : 40
    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
    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
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    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 éprouvé
    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 : 40
    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
    Par défaut
    Mon application tourne sous windows

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    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 éprouvé
    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 : 40
    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
    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 éprouvé
    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 : 40
    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
    Par défaut
    pas plus d'explications ou exemple ?

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