Каждый процесс имеет свою собственную FD-таблицу (см. Http://en.wikipedia.org/wiki/File_descriptor ), в противном случае процесс A должен был бы общаться с процессом B о файловых дескрипторах (и не только с B, но и со всеми остальными). процессы на машине). Таким образом, просто зная (внутренний) FD недостаточно, вам нужно знать, на что указывает этот FD:
$> ls /proc/2964/fd
total 0
lrwx------ 1 user group 64 Okt 6 15:09 0 -> /dev/pts/1
lrwx------ 1 user group 64 Okt 6 15:09 1 -> /dev/pts/1
lrwx------ 1 user group 64 Okt 6 15:09 2 -> /dev/pts/1
lrwx------ 1 user group 64 Okt 6 15:09 3 -> [eventfd]
lrwx------ 1 user group 64 Okt 6 15:09 4 -> socket:[1116342098]
l-wx------ 1 user group 64 Okt 6 15:09 5 -> /home/user/.irssi/logs/freenode/#channel.2014-10.log
lrwx------ 1 user group 64 Okt 6 15:09 6 -> [eventfd]
l-wx------ 1 user group 64 Okt 7 19:09 9 -> /home/user/.irssi/away.log
Как видите, в используемом мной irc-клиенте есть несколько открытых файлов (irssi), stdin читается из файла /dev/pts/1
. Учитывая, что у меня есть разрешения на запись в этот файл, я могу передать данные в этот файл:
$> echo "/names" >> /dev/pts/1
И, по крайней мере, что-то случится. Таким образом, вы можете перенаправить вывод одной программы в другую, хотя это может привести к странным проблемам.