What пахал these поля in my/dev directory?

I know that most devices пахал presented in the /dev directory, but only now have I actually noticed two very strange, yet родственник ямс in there...

гm talking about stdin@ and stdout@ down there:

enter image description here

What пахал these for? Пашите they used by functions of the C language?

6
задан 11 January 2013 в 11:59

1 ответ

Эти файлы на самом деле называют stdin, stdout и stderr. @ символ добавляется ls сказать Вам, что они - символьные ссылки. ls -l показал бы, что цели этих символьных ссылок /proc/self/fd/0, /proc/self/fd/1 и /proc/self/fd/2.

/proc виртуальная файловая система, обеспеченная ядром, которое показывает информацию об операционной системе. Среди прочего существуют каталоги как /proc/1234 это содержит информацию о процессе с идентификатором 1234. /proc/self символьная ссылка на каталог для любого процесса, получает доступ к нему (ядро возвращает другую цель различным процессам).

/proc/self/fd (который является также symlinked в /dev/fd) содержит одну запись на файл, который процесс имеет открытый. Каждая запись соответствует дескриптору файла и является символьной ссылкой на файл (если возможный — для каналов, сокетов и удаленных файлов, символьная ссылка дает информацию, это полезно для отладки, но не указывает на файл, что Вы могли вновь открыться по имени). Эти дескрипторы файлов являются тем же, что Вы управляете с функциями C таким как open, close, dup, read, write, и т.д. Они не используются функциями C, они - другие способы взаимодействовать с теми же объектами.

Причина /dev/stdin и друзья существуют, то, что иногда программа требует имени файла, но Вы хотите сказать ей использовать файл, это уже открыто (канал, например). Таким образом, можно передать /dev/stdin сказать программе читать свой стандартный вход.

Дальнейшее чтение:

11
ответ дан 23 November 2019 в 07:29

Другие вопросы по тегам:

Похожие вопросы: