Які ці файли в моєму / dev каталозі?


6

Я знаю, що більшість пристроїв представлені в /devкаталозі, але тільки зараз я помітив два дуже дивні, але знайомі назви там ...

Я говорю про там stdin@і stdout@там:

введіть тут опис зображення

Для чого це? Чи використовуються вони функціями мови С?

Відповіді:


11

Ці файли на насправді називається 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(який також є посиланням на /dev/fd) містить один запис на файл, який відкрив процес. Кожен запис відповідає дескриптору файлу і є символічним посиланням на файл (якщо можливо - для труб, розеток та видалених файлів, символічне посилання дає інформацію, яка корисна для налагодження, але не вказує на файл, який можна було б відкрити за назвою) . Ці файлові дескриптори ті ж , що ви маніпулюєте з функціями C , таких як open, close, dup, read, writeі т.д. Вони не використовуються функції С, вони інші способи взаємодії з тими ж об'єктами.

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

Подальше читання:

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.