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 :

Erreur espipe explication


Sujet :

C

  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2020
    Messages : 39
    Par défaut Erreur espipe explication
    Bonjour à tous,

    J'essaie de faire un lseek sur un tube.

    Je comprends que cela ne fonctionne pas car le pipe fonction en flux de données donc impossible de positionner le "curseur". En lecture je le comprends mais en écriture est-ce possible ?

    J'aimerai avoir des éléments théoriques pour le comprendre.

    J'ai fait ce petit programme pour ma démonstration :

    Code c : 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 "sys.h"
     
    int main(void) {
      // cette variable contiendra les descripteurs de lecture [0] et écriture [1] du tube
      int tube[2];
     
      // création du tube
      assert(pipe(tube) == 0);
     
      int ret_lseek = 0;
     
      // Tentative d'utiliser lseek sur le descripteur de lecture
      ret_lseek = lseek(tube[0], 1, SEEK_CUR);
      printf("La fonction lseek sur le descripteur de lecture retourne : %d\n", ret_lseek);
      perror("lseek()");
      if(errno == ESPIPE)
        puts("Erreur ESPIPE : fd est associé à un tube (pipe), une socket, ou une file FIFO.");
     
      puts("");
     
      // Tentative d'utiliser lseek sur le descripteur d'écriture
      ret_lseek = lseek(tube[1], 1, SEEK_CUR);
      printf("La fonction lseek sur le descripteur d'écriture retourne : %d\n", ret_lseek);
      perror("lseek()");
      if(errno == ESPIPE)
        puts("Erreur ESPIPE : fd est associé à un tube (pipe), une socket, ou une file FIFO.");
     
      return 0;
    }

    En l'exécutant j'ai bien un espipe sur lecture et écriture.

    Comment faire pour éviter l'erreur ? Je dois faire un unlink ?

    Merci pour votre aide !

  2. #2
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 283
    Par défaut
    Bonjour

    La conduite est un vide-ordure. Quand c'est lancé, c'est fini, il n'y à rien à parcourir. En réception, tant qu'on n'a pas reçu, il n'y a rien à parcourir non plus.

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

Discussions similaires

  1. explication d'une ligne d'erreur DEV
    Par katia_heraklion dans le forum C
    Réponses: 2
    Dernier message: 26/03/2007, 19h26
  2. [MySQL] Erreur sans explication
    Par jeremy_chauvel dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 10/01/2007, 17h27
  3. explication erreur "winmain@16"
    Par patchouli dans le forum C
    Réponses: 4
    Dernier message: 07/01/2007, 23h40
  4. Explication sur message d'erreur
    Par cjacquel dans le forum VC++ .NET
    Réponses: 2
    Dernier message: 13/12/2006, 13h47
  5. Réponses: 5
    Dernier message: 22/11/2005, 14h16

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