Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    91

    linux[PIPE]dubbio sul corretto uso

    ciao : ho una domanda sull uso delle PIPE . immaginiamo di avere due processi cooperanti
    che leggono da un file qualcosa e dopo scrivono il risultato su una pipe condivisa
    creata con la system call pipe , con il
    processo padre , che deve leggere il risultato e successivamente utilizzare la medesima pipe
    in verso opposto per comunicare qualcosa con i due processi figli

    può succedere che un processo che effettui una read su un lato della pipe , legga per sbaglio
    2 volte lo stesso dato?
    come posso essere certo che leggendo da una pipe io non legga 2 volte la stessa cosa per sbaglio?

    grazie

  2. #2
    No, una volta fatta la read il dato non c'è più nella pipe.
    Può però apparire il contrario se si legge sempre nello stesso buffer e non si controlla il valore restituito dalla read (se fallisce la read e il codice non controlla, andrà a considerare nuovamente il dato letto all'ultimo giro).
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    91
    ciao,grazie , ma ti chiedo... nel caso di comunicazione bidirezionale?

  4. #4
    Su Linux non esistono pipe bidirezionali
    codice:
       Portability notes
           On some systems (but not Linux), pipes are bidirectional: data  can  be
           transmitted  in  both  directions  between the pipe ends.  According to
           POSIX.1-2001, pipes only need to be unidirectional.  Portable  applica‐
           tions should avoid reliance on bidirectional pipe semantics.
    (da man 7 pipe)
    per cui se serve una comunicazione bidirezionale userai una coppia di pipe.

    Su alcuni Unix di famiglia BSD esistono pipe bidirezionali, ma anche in quel caso non vedo da dove dovrebbe venire il rischio di leggere due volte lo stesso dato...
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.