Come creare una named pipe

February 12

Come creare una named pipe


Una caratteristica potente di Linux, insieme ad altre varietà di Unix, è la possibilità per un comando per fornire l'input per un altro comando con un tubo. Rappresentato sulla tastiera come la barra verticale "|", tubi permettono programmi separati per parlare tra loro senza essere sviluppati per farlo. In questo modo, i tubi servono come metodo inerente Inter Process Communication o IPC. Tubi possono anche essere utilizzati esplicitamente per attivare processi di comunicare. Per facilitare i processi che identificano il tubo creato per l'uso, è conveniente assegnare il tubo di un nome prevedibile che un processo può aprire per la lettura o la scrittura. Seguire questa procedura per nominare un tubo.

istruzione

1 Avviare un editor di testo e aprire un file C / C ++ fonte.

2 Creare una estremità di un tubo utilizzando l'API libc mkfifo in forma int mkfifo (const char * percorso, modalità mode_t); Ad esempio, mkfifo ( "/ tmp / miapipe", 0666) ;.

3 Controllare il valore di ritorno della API mkfifo per garantire che sia uguale a zero, in quanto questo indica il successo. Si noti che se il valore di ritorno non è zero, l'errore non può essere fatale. Per determinare se il tubo è praticabile, controllare il valore di errno. Se errno è pari a EEXIST, poi il tubo esiste già e il programma può continuare.

4 Stabilire la direzione della comunicazione e richiamare l'API aperta libc specificando il nome del tubo assegnato al punto 2, nonché la modalità, leggere o scrivere. Per esempio: open ( "/ tmp / miapipe", 0_RDONLY) ;. Si noti che un tubo può essere aperto solo da un determinato processo come sia leggibile o scrivibile, ma non entrambi. Se il programma corrente leggerà dal tubo, poi ripetere i passaggi da 1 a 4 in un altro programma per creare il processo che scriverà al tubo.

5 Aprire un terminale di comando ed eseguire una lunga lista nella directory "/ tmp". Si noti la presenza del file "miapipe" e l'attributo principale è impostato come "p", per indicare che è il tipo corretto di tubo. Se il processo del campione sceglie di aprire il tubo come leggibile, utilizzare il comando echo sulla riga di comando per reindirizzare le informazioni al tubo per l'utilizzo da parte del processo. Ad esempio, se si digita "echo Ciao> / tmp / miapipe" sarà disponibile per il processo quando si preme il tasto Invio.