-
Файлови дескриптори (File descriptors)
- Цяло положително число, идентифициращо отворен файл в операционната система.
- Всеки UNIX процес има 3 стандартни file descriptor-a
Integer value Name <stdio.h> file stream[2] 0 Стандартен вход (Standard input) stdin 1 Стандартен изход (Standard output) stdout 2 Стандартен изход за грешки (Standard error) stderr -
Функции за работа с файлови дескриптори
-
int open(const char *pathname, int flags) - man 2 open
- Отваря файл от подаден път (pathname) и връща file descriptor идентифициращ този файл.
- Вторият аргумент - flags се използва за определяне на режима на работа с
файла - примерно
O_RDONLY
флагът отваря файла в режим само за четене. - Всички флагове са описани в man page-овете.
-
int close(int fd) - man 2 close
- Затваря отворен file descriptor.
- При грешка връща -1, а иначе 0.
-
ssize_t read(int fd, void *buf, size_t count) - man 2 read
- Чете N на брой байтове (count) от file descriptor и ги запаметява в даден буфер (buf).
- При грешка връща -1, а при успех - броят на прочетените байтове.
-
ssize_t write(int fd, void *buf, size_t count) - man 2 write
- Чете N на брой байтове (count) от буфер и ги записва в даден file descriptor. При грешка връща -1, а при успех - броят на прочетените байтове.
-
off_t lseek(int fd, off_t offset, int whence) - man 2 lseek
- Задава позиция в file descriptor; като аргументи получава file descriptor-а (fd), с колко байта да се отмести позицията на четене в него (offset) и спрямо къде да се смята отместването (whence).
- Whence може да е един от следните 3 аргумента:
SEEK_SET
- Спрямо началото на файлаSEEK_CUR
- Спрямо сегашната позиция във файлаSEEK_END
- Спрямо краят на файла
-
-
Задача 1 - "cat"
-
Задача 2 - "1/3 cat"
01-file-descriptors
Folders and files
Name | Name | Last commit date | ||
---|---|---|---|---|
parent directory.. | ||||