Skip to content

Latest commit

 

History

History

01-file-descriptors

Работа с файлове и файлови дескриптори

  1. Файлови дескриптори (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
  2. Функции за работа с файлови дескриптори

    • 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 - Спрямо краят на файла
  3. Задача 1 - "cat"

    [Условие] [Решение]

  4. Задача 2 - "1/3 cat"

    [Условие] [Решение]