Возможный дубликат:
C fopen vs open
В чем разница между open() и fopen() на языке C?
Возможный дубликат:
C fopen vs open
В чем разница между open() и fopen() на языке C?
Один из них является частью стандартной библиотеки c (fopen
), поэтому вы можете ожидать, что она будет присутствовать во всех установках компилятора размещенного c. Эта функция возвращает FILE*
, которая может управляться функциями в <stdio.h>
.
Другой (open
) - это системный вызов/функция, не указанная стандартом c (однако, я считаю, что это часть стандарта POSIX) и поэтому гарантируется только на некоторых платформах, которые утверждают, что поддерживают ее. Это возвращает int
, который представляет файл, это можно использовать при использовании read
/write
и других подобных функций.
open()
- стандартизованный системный вызов, предоставляемый операционной системой, совместимой с POSIX (большинство POSIX-подобных операционных систем также имеют системный вызов open()
). fopen()
- это библиотечная функция C, предоставляемая библиотекой реализации C и/или выполнения.
fopen()
допускает буферизованный и/или форматированный ввод/вывод, тогда как open()
обычно используется для более простого ввода-вывода. Функцию fopen()
можно реализовать с помощью системного вызова open()
.
Как говорят другие, open() представляет собой системный вызов через стандарт POSIX, в основном поддерживаемый семейством ОС UNIX. Он возвращает 'int', указывающий на открытие дескриптора файла.
В то время как fopen() предоставляется C-библиотекой и возвращает FILE *, указывающий на открываемый файл.