Открытая и открытая функция

Возможный дубликат:
C fopen vs open

В чем разница между open() и fopen() на языке C?

Ответ 1

Один из них является частью стандартной библиотеки c (fopen), поэтому вы можете ожидать, что она будет присутствовать во всех установках компилятора размещенного c. Эта функция возвращает FILE*, которая может управляться функциями в <stdio.h>.

Другой (open) - это системный вызов/функция, не указанная стандартом c (однако, я считаю, что это часть стандарта POSIX) и поэтому гарантируется только на некоторых платформах, которые утверждают, что поддерживают ее. Это возвращает int, который представляет файл, это можно использовать при использовании read/write и других подобных функций.

Ответ 2

open() - стандартизованный системный вызов, предоставляемый операционной системой, совместимой с POSIX (большинство POSIX-подобных операционных систем также имеют системный вызов open()). fopen() - это библиотечная функция C, предоставляемая библиотекой реализации C и/или выполнения.

fopen() допускает буферизованный и/или форматированный ввод/вывод, тогда как open() обычно используется для более простого ввода-вывода. Функцию fopen() можно реализовать с помощью системного вызова open().

Ответ 3

Как говорят другие, open() представляет собой системный вызов через стандарт POSIX, в основном поддерживаемый семейством ОС UNIX. Он возвращает 'int', указывающий на открытие дескриптора файла.

В то время как fopen() предоставляется C-библиотекой и возвращает FILE *, указывающий на открываемый файл.