Книга: Программирование для Linux. Профессиональный подход
Листинг 7.6. (open-and-spin.c) Открытие файла для чтения
Листинг 7.6. (open-and-spin.c) Открытие файла для чтения
#include <fcntl.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
int main(int argc, char* argv[]) {
const char* const filename = argv[1];
int fd = open(filename, O_RDONLY);
printf("in process %d, file descriptor %d is open to %sn",
(int)getpid(), (int)fd, filename);
while (1);
return 0;
}
Запустите программу в терминальном окне:
% ./open-and-spin /etc/fstab
in process 2570, file descriptor 3 is open to /etc/fstab
Теперь откройте другое окно и проверьте подкаталог fd
процесса с указанным номером:
% ls -l /proc/2570/fd
total 0
lrwx------ 1 samuel samuel 64 Jan 30 01:30 0 -> /dev/pts/2
lrwx------ 1 samuel samuel 64 Jan 30 01:30 1 -> /dev/pts/2
lrwx------ 1 samuel samuel 64 Jan 30 01:30 2 -> /dev/pts/2
lr-x------ 1 samuel samuel 64 Jan 30 01:30 3 -> /etc/fstab
Как видите, появилась, ссылка 3, которая соответствует дескриптору файла /etc/fstab
, открытого программой.
Программа может открывать дескрипторы не только файлов, но также сокетов и каналов. В таких случаях адресатом символической ссылки будет строка "socket" или "pipe", а не имя файла либо устройства.
- Открытие файлов
- Листинг 10.1. (simpleid.c) Отображение идентификаторов пользователя и группы
- Эффективная работа с временными файлами сортировки
- Единое имя файла параметров InterBase
- Разработка приложений баз данных InterBase на Borland Delphi
- Параметры конфигурационного файла InterBase
- Open Source Insight and Discussion
- LOCK ACQUIRE SPINS
- 5.12.2 Открытие поименованного канала
- Introduction to Microprocessors and Microcontrollers
- Chapter 6. Traversing of tables and chains
- Chapter 8. Saving and restoring large rule-sets