# Библиотека за работа с файлове

Библиотеката **unistd.h** съдържа методи за работа с файлове:

```c
#include<unistd.h>
int open(const char *name, int flags);
int open(const char* name, int flags, mode_t mode);
int close();
```

Параметъра флаг (**flag**) е бит маска определяща следното:

| флаг         | Информация                                                   |
| ------------ | ------------------------------------------------------------ |
| O\_APPEND    | Файлът ще бъде отворен в режим на добавяне.                  |
| O\_ASYNC     | SIGIO се генерира, когато може да се чете или да се записва. |
| O\_CREAT     | Ако файлът не съществува го създава.                         |
| O\_DIRECT    | Отваря файла за директен вход/изход.                         |
| O\_DIRECTORY | Ако името не е директория, то дава грешка                    |
| O\_EXCL      | Ако O\_CREAT и файлът съществува, то дава грешка.            |
| O\_LARGEFILE | Отваря файл по-голям от 2 ГБ                                 |
| O\_NOCTTY    | Този флаг не се използва                                     |
| O\_NOFOLLOW  | Ако name е символна връзка, то дава грешка                   |
| O\_NONBLOCK  | Ако е възможно, отваря файла в неблокиращ режим.             |
| O\_SYNC      | Файлът ще бъде отворен за синхронен Вход/Изход               |
| O\_TRUNC     | Ако файлът съществува, той се съкращава до нулева дължина    |

В случай че е зададен флаг **O\_CREAT**, то режима на работа е бит маска, както следва:

|          |          |          |          |
| -------- | -------- | -------- | -------- |
| S\_IRWXU | S\_IXUSR | S\_IWGRP | S\_IROTH |
| S\_IRUSR | S\_IRWXG | S\_IXGRP | S\_IWOTH |
| S\_IWUSR | S\_IRGRP | S\_IRWXO | S\_IXOTH |
