Книга: Программирование для Linux. Профессиональный подход
7.2.5. Дескрипторы файлов процесса
7.2.5. Дескрипторы файлов процесса
Элемент fd
файловой системы /proc
— это подкаталог, в котором содержатся записи обо всех файлах, открытых процессом. Каждая запись представляет собой символическую ссылку на файл или устройство. Через эти ссылки можно осуществлять чтение и запись данных. Имена ссылок соответствуют номерам дескрипторов.
Рассмотрим небольшой трюк. Откройте новое терминальное окно и найдите с помощью команды ps идентификатор процесса, соответствующий интерпретатору команд:
% ps
PID TTY TIME CMD
1261 pts/4 00:00:00 bash
2455 pts/4 00:00:00 ps
В данном случае процесс идентификатора команд (bash
) имеет идентификатор 1261. Теперь откройте второе окно и просмотрите содержимое подкаталога fd
этого процесса:
% ls -l /proc/1261/fd total 0
lrwx------ 1 samuel samuel 64 Jan 30 01:02 0 -> /dev/pts/4
lrwx------ 1 samuel samuel 64 Jan 30 01:02 1 -> /dev/pts/4
lrwx------ 1 samuel samuel 64 Jan 30 01:02 2 -> /dev/pts/4
(В выводе могут присутствовать дополнительные строки, соответствующие другим открытым файлам.) Вспомните в разделе 2.1.4, "Стандартный ввод-вывод", рассказывалось о том. что дескрипторы 0, 1 и 2 закрепляются за стандартными потоками ввода, вывода и ошибок соответственно. Таким образом, при записи в файл /proc/1261/fd/1
данные будут направляться в устройство, связанное с потоком stdout
интерпретатора команд, т.е. на псевдотерминал первого окна. Попробуйте ввести следующую команду
% echo "Hello, world." >> /proc/1261/fd/1
Сообщение "Hello, world." появится в первом окне.
В подкаталоге fd
могут присутствовать ссылки и на другие файлы. В листинге 7.6 показана программа, которая открывает файл, указанный в командной строке, и переходит в бесконечный цикл.
- 1.2 Процесс, контекст процесса и потоки
- 9.4.1. Дублирование открытых файлов: dup() и dup2()
- Файловые дескрипторы
- Создание процесса
- Наследуемые дескрипторы
- 7.2.7. Статистика процесса
- 7.1 СОЗДАНИЕ ПРОЦЕССА
- Резервное копирование многофайловых баз данных
- Восстановление из резервных копий многофайловых баз данных
- Сущность процесса миграции
- Создание файлов с блокировкой
- V Совершенствование процесса