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 :

UNIX : contourner taille max buffer pipe


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut UNIX : contourner taille max buffer pipe
    Bonjour,
    je dois réaliser pour un projet scolaire un shell unix (bash-like).

    Afin de faire communiquer les processus forkés pour gérer les pipes, je me sers de pipe().
    Hélas ceux ci ont une taille de buffer definie a la compilation du kernel (PIPE_SIZE), de 64 Ko sur ma distrib.
    En gros mon shell crash quand le flux pipé dépasse 64 Ko.

    Comment contourner cette limitation?
    existe-t-il un moyen toujours avec pipe(), ou devrais-je plutot essayer d'utiliser les fifos (mkfifo()) ?

    Merci d'avance.
    Cordialement,
    bosow

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 400
    Points : 23 770
    Points
    23 770
    Par défaut
    64 Ko ? Tu utilises quelle distrib ? Généralement, les pipes sont initialisés à 4 Ko.

    Tu peux regarder du côté de ulimit, mais si ton Shell crashe lorsque tu dépasses la limite, c'est que le problème vient d'ailleurs.

    Bon courage.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Je suis sous freeBSD 5.5, ca plante quand je fais un
    cat file1 | wc
    avec file1 qui pese 64Ko, en dessous ca passe.

    En gros le souci c'est que mon shell part en boucle infinie (le pere reste bloque sur le waitpid qui attend le retour du fils qui execute la premiere instruction)


    quand je regarde avec ps l'etat de mes processus, mysh (mon shell) et "cat file1" sont en sleep.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 27
    Points : 25
    Points
    25
    Par défaut
    Hello,

    Je pense que tu vas chercher un peu trop loin, normalement il n'y a pas de problèmes.
    Peut-être qu'avec un minimum de code on aurait d'autres idées ?

    Si tu nous montrais le code qui fait le pipe dans ta boucle principale ? (ça doit tenir en 20 lignes maxi... sauf si il y a confidentialité scolaire )

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    en effet confidentialite scolaire il y a
    Je t'envoie le code en MP si ca t'embete pas...

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    resolu, thx bloomenthal!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2000] Export XL : Contourner la taille max. d'un champ texte
    Par gocho dans le forum VBA Access
    Réponses: 1
    Dernier message: 05/08/2009, 14h10
  2. problem avec les buffer: taille max
    Par darckangel7 dans le forum Débuter
    Réponses: 2
    Dernier message: 05/12/2008, 23h42
  3. Réponses: 1
    Dernier message: 04/04/2005, 11h19
  4. Taille Max que peux gerer un serveur SQL
    Par Youssef dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/07/2004, 11h52
  5. taille max du nom d'un champ
    Par hna dans le forum Paradox
    Réponses: 2
    Dernier message: 28/07/2002, 02h40

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