Вопрос основан на неверном представлении о всеобщности файловых систем proc. Системы, в которых это реализовано (такие как Solaris и Linux), имеют специальные устройства, которые можно использовать для сценариев, включая /dev/fd
, за которым следует дескриптор файла (номер).
В Solaris /dev/fd
является виртуальной папкой под /dev
, а в Linux используется символическая ссылка на /proc
в (виртуальную) папку, соответствующую идентификатору вашего процесса. Стандартов для файловых систем proc не существует, и детали будут отличаться.
Проверяем системы AIX 5.3 и 7.1, они действительно реализуют файловую систему proc, но не имеют /dev/fd
. Однако в них есть виртуальная файловая система /proc
, под которой можно найти текущий идентификатор процесса, а под этим находится fd
папка с дескрипторами файлов.
Обычно файловые дескрипторы инициализируются 0, 1, 2 для stdin, stdout, stderr соответственно.
Дальнейшее чтение:
/proc
- Содержит информацию о состоянии процессов и потоков в системе (AIX 7)
for fd
:
Содержит файлы всех открытых файловых дескрипторов процесса. Каждая запись представляет собой десятичное число, соответствующее открытому дескриптору файла в процессе. Если сущность ссылается на обычный файл, он может быть открыт с обычной семантикой файла. Для того чтобы контролирующий процесс не мог получить более широкий доступ, в контролируемом процессе нет никаких режимов доступа к файлам, кроме его собственных режимов чтения/записи. Каталоги будут отображаться как ссылки. Попытка открыть запись любого другого типа будет неудачной (поэтому в списке будет отображаться разрешение 0).