PDA

View Full Version : [BASH] Scrivere su FIFO con echo (o cat)


HoldenCaulfield1987
05-07-2014, 18:46
Ciao,
sto scrivendo un programmino in C che dovrà fungere da server.
Questo server deve leggere dati da una FIFO, elaborarli e restituire l'output attraverso una seconda FIFO.
L'esercizio chiede che il client debba mandare i dati al server scrivendoli sulla FIFO direttamente da shell, tramite cat o echo.
Il problema è che se scrivo un


echo "msg_test" > /tmp/fifo_read


l'operazione si blocca e sono costretto a killare la shell.
Idem se uso cat.
Dove sto sbagliando??
Grazie!

Freaxxx
05-07-2014, 19:11
per FIFO intendi cosa ?

Un normale file ? un eseguibile che può leggere una pipe ?

per la cronaca dovresti far presente a chi ti ha assegnato l'esercizio che è mediamente ignorante in materia, dato che echo è largamente sconsigliato specialmente per un uso all'interno di uno script, e specialmente se vuoi avere totale controllo sui caratteri e le stringhe, e cat è una utility esterna, solitamente parte delle GNU Core Utilities, quindi è pure un pessimo esercizio per imparare ad usare la bash .

HoldenCaulfield1987
05-07-2014, 19:27
L'esercizio è system programming.
Ci viene detto di usare echo, cat o mkfifo (e quest'ultimo mi fa strano) per verificare che il server (scritto in c) legga a dovere ciò che gli viene passato e produca un output adeguato.
Per FIFO intendo una named pipe, creata con la syscall mkfifo().

Freaxxx
05-07-2014, 21:21
allora ti basta una ricerca su internet, sù!, non è così difficile, la cosa più impegnativa è capire come si opera la redirezione dello stream/flusso con una shell come la bash.

http://www.linuxjournal.com/content/using-named-pipes-fifos-bash
http://stackoverflow.com/questions/23088620/using-mkfifo-in-a-shell-script

HoldenCaulfield1987
05-07-2014, 22:51
E' strano, perché la redirezione la conosco bene e la prima volta che l'ho usata per le fifo non ha funzionato come mi aspettavo. Adesso invece va tutto. Boh!!
Comunque grazie.