===== Wyciąg funkcji i stałych z materiałów =====
==== Porównanie API ====
^ POSIX ^ [[https://en.cppreference.com/w/cpp/io/c|C I/O]] ^ [[https://en.cppreference.com/w/cpp/io|C++ streams]] ^
| // identyfikuje plik przez:// |||
| deskryptor pliku \\ ''int'' | wskaźnik \\ ''FILE*'' | specjalizowane klasy \\ ''std::ifstream''/''std::ofstream''/''std::fstream'' |
| //otwieranie / tworzenie / zamykanie / usuwanie pliku:// |||
|''open'' \\ ''creat''|''fopen'' |konstruktor klasy lub metoda ''open'' |
|''close'' |''fclose'' |metoda ''close'' |
|''unlink'' |''remove'' |''std::filesystem::remove'' |
| //odczyt / zapis / zmiana pozycji:// |||
|''read'' |''fread'', ''fscanf'', ''fgetc'', ''fgets'', … |operator >>, metody ''read'', ''readsome'', ''get'', ''getline'', … |
|''write'' |''fwrite'', ''fprintf'', ''fputc'', ''fputs'', … |operator <<, metody ''write'', ''put'', … |
|''lseek'' |''fseek'', ''ftell'', ''fgetpos'', ''fsetpos'', … |metoda ''tellg'' i ''seekg'' |
| //inne:// |||
|''truncate'' \\ ''ftruncate'' | |''std::filesystem::resize_file'' |
|''dup'' \\ ''dup2'' | | |
| //standardowe identyfikatory wejścia/wyjścia/błędu:// |||
|''0'', ''1'' i ''2'' |''stdin'', ''stdout'' i ''stderr'' |''std::cin'', ''std::cout'' i ''std::cerr'' |
==== #include'y ====
POSIX:
| ''fcntl.h'' | (__f__ile __c__o__nt__ro__l__) | ''open'', ''creat'' |
| ''unistd.h'' || pozostałe funkcje interfejsu POSIX z tabeli wyżej |
C:
| ''errno.h'' | stała ''errno'' ((Nieliczne wartości stałej ''errno'' wchodzą w standard C, większość wartości ustandaryzowanych w POSIX wchodzi też w standard języka C%%++%%.)) |
| ''stdio.h'' | ''perror'' |
| ''string.h'' | ''strerror'' |
==== Wybrane stałe ====
Deskryptory plików:
^ Wartość ^ Nazwa stałej ^
| **0** | STDIN_FILENO |
| **1** | STDOUT_FILENO |
| **2** | STDERR_FILENO |
Wybrane flagi dla funkcji ''open'':
* obowiązkowo jedna z flag: ''O_RDONLY'', ''O_RDWR'', ''O_WRONLY''
* ''O_CREAT'' lub ''O_CREAT | O_EXCL'' (przy ustawieniu tej flagi do funkcji ''open'' trzeba przekazać trzeci argument opisujący uprawnienia nowo tworzonego pliku)
* ''O_APPEND''
* ''O_TRUNC''
Pozycje odniesienia dla ''lseek'':
* SEEK_SET
* SEEK_CUR
* SEEK_END