GNU/Linux >> Linux Esercitazione >  >> Linux

Esempio di utilizzo di named pipe in Linux Bash

Uno dei migliori esempi di utilizzo pratico di una named pipe...

Da http://en.wikipedia.org/wiki/Netcat:

Un altro comportamento utile è usare netcat come procuratore. Sia le porte che gli host possono essere reindirizzati. Guarda questo esempio:

nc -l 12345 | nc www.google.com 80

La porta 12345 rappresenta la richiesta.

Questo avvia un nc server sulla porta 12345 e tutte le connessioni vengono reindirizzate a google.com:80 . Se un browser Web effettua una richiesta a nc , la richiesta verrà inviata a google ma la risposta non verrà inviata al browser web. Questo perché i tubi sono unidirezionali. Questo può essere aggirato con una named pipe per reindirizzare l'input e l'output.

mkfifo backpipe
nc -l 12345  0<backpipe | nc www.google.com 80 1>backpipe

Ecco i comandi:

$ mkfifo named_pipe

$ echo "Hi" > named_pipe &

$ cat named_pipe

Il primo comando crea la pipe.

Il secondo comando scrive nella pipe (blocco). Il & lo mette in secondo piano in modo da poter continuare a digitare i comandi nella stessa shell. Uscirà quando il FIFO sarà svuotato dal comando successivo.

L'ultimo comando legge dalla pipe.


Apri due gusci diversi e lasciali uno accanto all'altro. In entrambi, vai al /tmp/ cartella:

cd /tmp/

Nella prima digita:

mkfifo myPipe
echo "IPC_example_between_two_shells">myPipe

Nella seconda digita:

while read line; do echo "What has been passed through the pipe is ${line}"; done<myPipe

La prima shell non ti restituirà alcun prompt fino a quando non eseguirai la seconda parte del codice nella seconda shell. È perché il fifo in lettura e scrittura sta bloccando.

Puoi anche dare un'occhiata al tipo FIFO facendo un ls -al myPipe e vedere i dettagli di questo specifico tipo di file.

Il passo successivo sarebbe imbarcare il codice in uno script!


Linux
  1. Come utilizzare pipe e pipe con nome in Linux (con esempi)

  2. Utilizzo del comando di sospensione di Linux negli script Bash

  3. Servizio del sistema operativo Linux "denominato"

  4. Esempio di utilizzo di getnstimeofday nel kernel Linux

  5. Come controllare l'accesso a Internet usando lo script bash in Linux?

Un'introduzione alle pipe e alle named pipe in Linux

Comando della cronologia in Linux (Cronologia di Bash)

Linux mkfifo Command Tutorial per principianti (con esempi)

Utilizzo del comando Watch in Linux

Utilizzo del comando Linux Dirname negli script Bash

Cosa sono le pipe in Linux? Come funziona il reindirizzamento dei tubi?