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).