Successivo: , Precedente: , Su: Getline   [Contenuti][Indice]


4.10.7 Usare getline da un coprocesso

Leggere dell’input in getline da una pipe è un’operazione unidirezionale. Il comando avviato con ‘comando | getline’ invia dati al programma awk.

Occasionalmente, si potrebbe avere la necessità di inviare dei dati a un altro programma che li elabori, per poi leggere il risultato che esso genera. gawk permette di avviare un coprocesso, col quale sono possibili comunicazioni bidirezionali. Questo vien fatto con l’operatore ‘|&’. Tipicamente, dapprima si inviano dati al coprocesso e poi si leggono i risultati da esso prodotto, come mostrato di seguito:

print "some query" |& "db_server"
"db_server" |& getline

esso invia una richiesta a db_server e poi legge i risultati.

I valori di NR e FNR non vengono cambiati, perché non è cambiato il flusso principale. In ogni caso, il record è diviso in campi nel solito modo, cambiando così i valori di $0, degli altri campi, e di NF e RT.

I coprocessi sono una funzionalità avanzata. Vengono trattati qui solo perché questa è la sezione su getline. Vedi la sezione Comunicazioni bidirezionali con un altro processo, dove i coprocessi vengono trattati più dettagliatamente.