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

Programmation et administration système Perl Discussion :

[IO::Socket] Lectures parasites


Sujet :

Programmation et administration système Perl

  1. #1
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2006
    Messages : 139
    Points : 147
    Points
    147
    Par défaut [IO::Socket] Lectures parasites
    Bonjour,

    J'ai un programme qui se connecte à un serveur par l'intermédiaire d'une IO::Socket, et envoie de façon séquentielle une liste de commandes systèmes à exécuter sur le serveur.
    Après chaque commande envoyée, le serveur envoie le résultat, que le client affiche dans ses logs.

    L'exécution des commandes passe par une méthode, qui renvoie :
    • 1 SortieStandardDeLaCommande si la commande aboutit
    • 0 en cas d'erreur


    J'ai un problème de lectures parasites lorsque je tente d'exécuter des commandes systèmes non triviales.

    Exemple :
    • rpm -qf `ls -l EXE | awk -F " -> " '{print $2}'` (lecture d'un lien système, récupération du chemin pointé, et interrogation du paquetage d'origine du chemin pointé)
    • echo 1
    • pwd


    Le problème vient du fait que le lien EXE n'existe pas forécement dans l'emplacement de travail.
    A la première connexion, l'ensemble des commandes fonctionnent correctement, et je récupère le bon résultat pour chaque commande
    A la deuxième connexion, j'ai une lecture parasite sur la socket "EXE not found" en résultat de la première commande, et je ne récupère 0 que pour le résultat de la deuxième commande. Tous les résultats sont décalés par la première lecture, ce qui fait que je ne récupère jamais le dernier résultat.
    "EXE not found" est la sortie d'erreur de la sous-commande ls -l EXE | awk -F " -> " '{print $2}', et est alors affiché dans la sortie standard de la première commande système.

    J'affiche dans un fichier de logs chaque résultat à envoyer au client avant de l'écrire sur la socket, et je n'ai jamais la trace du message "EXE not found".

    D'où peut venir l'écriture de ce message sur la socket ?

  2. #2
    Membre habitué
    Inscrit en
    Mai 2006
    Messages
    139
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2006
    Messages : 139
    Points : 147
    Points
    147
    Par défaut
    J'ai contourné le problème en écrivant la commande à exécuter dans un fichier, et en exécutant ce fichier par la suite. Ainsi la sortie d'erreur englobera tous les messages renvoyés par la commande.

Discussions similaires

  1. Réponses: 0
    Dernier message: 23/02/2015, 05h50
  2. design pattern sockets lecture/écriture
    Par rgamor dans le forum Langage
    Réponses: 30
    Dernier message: 25/08/2011, 13h03
  3. Socket : lecture et écriture simultanée
    Par poukill dans le forum C++
    Réponses: 6
    Dernier message: 30/06/2010, 16h53
  4. Socket Lecture InputStream
    Par RMEMEU dans le forum Langage
    Réponses: 3
    Dernier message: 25/03/2010, 11h14
  5. Socket lecture non bloquante
    Par Darkthur dans le forum Multithreading
    Réponses: 2
    Dernier message: 22/05/2009, 18h28

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