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

Développement Windows Discussion :

Récupérer un erreur dans un "process"


Sujet :

Développement Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 132
    Par défaut Récupérer un erreur dans un "process"
    Bonjour,

    je voudrais savoir si c'est possible d'avoir un bilan de l'exécution d'un processus que je lance dans mon code C#. Je m'explique:

    Je lance un processus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    infoProcess = new ProcessStartInfo("cmd.exe", "/C " + command);
    infoProcess.CreateNoWindow = true;
    infoProcess.UseShellExecute = false;
    process = Process.Start(infoProcess);
    Je peux également savoir si le processus existe encore ou s'il répond toujours:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    do
    {
           if (process.Responding)
           {
                   //....
           }
        }
    }
    while (!process.HasExited);
    Cependant, comme vous pouvez le voir, je fais appelle à cmd.exe en lui passant une série d'instruction contenue dans le string "command".

    Ma question est: Est-ce possible de capturer avec mon code C# en passant par la classe "process" ou "processInfo", une erreur survenue dans le cmd.exe?

    Tout commentaire ou suggestion serait appréciée

    Merci et bonne fin de journée
    Gabriel Deschênes

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Bonsoir

    Déjà pourquoi passer par un process "cmd" pour lancer le processus en question ? sauf si c'est un .bat/.cmd, je n'en comprends pas la raison.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 132
    Par défaut
    car j'ai une série d'instruction pour ouvrir une session FTP en command line via cmd.exe, donc je me demande si c'est possible de capturer avec mon code C# en passant par la classe "process" ou "processInfo", une erreur survenue dans le cmd.exe?

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par gabdeschenes Voir le message
    car j'ai une série d'instruction pour ouvrir une session FTP en command line via cmd.exe, donc je me demande si c'est possible de capturer avec mon code C# en passant par la classe "process" ou "processInfo", une erreur survenue dans le cmd.exe?
    Clairement non, puisque le process examiné est le cmd.exe (donc sauf erreur du cmd.exe, mais reconnaissons que c'est assez improbable).

    Bien que je ne comprenne pas pourquoi tu ne traites pas ton FTP dans ton programme - plutôt que d'appeler un programme externe - , le plus simple dans ce cas est de faire une redirection de la sortie du process vers un pipe et d'examiner les messages consoles émis.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Les seuls "retours" que tu puisses avoir du process sont le code de retour (qui ne t'apprend pas grand chose...) et les sorties du process (standard output et standard error).

    Tu peux récupérer ces 2 flux en mettant à true les propriétés RedirectStandardOutput et RedirectStandardError dans le ProcessStartInfo. Une petite recherche de ces termes sur Google devrait te donner pas mal d'exemples

    Par contre il n'est pas possible d'intercepter les exceptions qui se produisent dans un autre process...

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 524
    Par défaut
    Par contre il n'est pas possible d'intercepter les exceptions qui se produisent dans un autre process...
    Sauf en utilisant des débuggeurs en ligne type CDB ou NTSD mais je ne pense pas que cela soit raisonnable pour un débutant.

Discussions similaires

  1. Récupérer code erreur dans une log
    Par clluciole dans le forum Développement
    Réponses: 1
    Dernier message: 03/08/2009, 15h20

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