Come ricavare il terminale su cui gira un processo
Per ricavare il terminale associato ad un processo, la soluzione più
diffusa è quella di fare il parsing dell'output di ps
, anche perchè
viene rapida se eseguita a mano.
Fare il parsing di tale output in uno script, a suon di awk
, cut
,
grep
o quant'altro, non è altrettanto agevole.
Ricordandoci che il terminale associato ad un processo interattivo sarà
il suo STDIN
, ovvero al suo FD 0
, possiamo quindo sfruttare il
filesystem /proc
per ricavarlo dal link simbolico /proc/$PID/fd/0
:
# xterm &
# CHILDTTY=`readlink /proc/\$!/fd/0`
Il comando readlink
è stato inserito in quanto non tutti i programmi
che interagiscono con i terminali gradiscono il link simbolico in proc
(pconsole
è uno di questi).