Дескриптор файла и указатель файла
Дескриптор файла:
Дескриптор файла является целочисленным значением, возвращаемым системным вызовом open()
.
int fd = open (filePath, mode);
- Низкий / Уровень ядра обработчик.
- переход к read () и write () системных вызовов UNIX.
- Не включает буферизацию и такие функции.
- Менее портативен и неэффективен.
Указатель файла:
File Pointer - указатель на структуру C, возвращаемую библиотечной функцией fopen()
, которая используется для идентификации файла, обертывания файлового дескриптора, буферизации и всех других функций, необходимых для операции ввода-вывода . Указатель файла имеет тип FILE , определение которого можно найти в "/ usr / include / stdio.h" . Это определение может варьироваться от одного компилятора к другому.
FILE *fp = fopen (filePath, mode);
// A FILE Structure returned by fopen
typedef struct
{
unsigned char *_ptr;
int _cnt;
unsigned char *_base;
unsigned char *_bufendp;
short _flag;
short _file;
int __stdioid;
char *__newbase;
#ifdef _THREAD_SAFE
void *_lock;
#else
long _unused[1];
#endif
#ifdef __64BIT__
long _unused1[4];
#endif /* __64BIT__ */
} FILE;
- Это интерфейс высокого уровня.
- Передано в функции fread () и fwrite ().
- Включает буферизацию, индикацию ошибок и обнаружение EOF и т. Д.
- Обеспечивает более высокую мобильность и эффективность.