Tuesday, July 19, 2011

COPROCESS

La ksh permette di lanciare uno o piu' comandi come processi in background.
Questi processi sono chiamati coprocesses e sono utilizzati per comunicare
con un programma.
Un coprocess si crea mettendo l'operatore |& (pipe, ampersand) dopo un commando.
Entrambi stdin e stdout del commando sono piped verso il tuo script.
Un coprocess deve incontrare le seguenti restrizioni:
·    Includi un new-line alla fine di ogni messaggio
·    Manda ogni messaggio di output allo standard output
·    Pulisce il suo stdout dopo ogni messaggio

L' esempio dimostra come l'input e' passato verso e ritornato da un coprocess:
  echo "Initial process" 
  ./FileB.sh |&
  read -p a b c d
  echo "Read from coprocess: $a $b $c $d" 
  print -p "Passed to the coprocess" 
  read -p a b c d
  echo "Passed back from coprocess: $a $b $c $d" 
FileB.sh
  echo "The coprocess is running" 
  read a b c d
  echo $a $b $c $d
L'output risultante e' il seguente:
  Initial process
  Read from coprocess: The coprocess is running
  Passed back from coprocess: Passed to the coprocess

Il comando 'print -p' ti permette discrivere verso il coprocess.
Per leggere dal coprocess, lancia il comando 'read -p'.