【发布时间】:2011-04-06 01:43:53
【问题描述】:
【问题讨论】:
-
见[C fopen vs open](stackoverflow.com/questions/1658476/c-fopen-vs-open)。
标签: c
【问题讨论】:
标签: c
其中一个是标准 c 库 (fopen) 的一部分,因此您可以期望它出现在所有托管的 c 编译器设置中。该函数返回一个FILE*,可以被<stdio.h>中的函数操作。
另一个 (open) 是 c 标准未指定的系统调用/函数(但是,我相信它是 POSIX 标准的一部分),因此只保证存在于声称支持它的选定平台上。这会返回一个代表文件的int,可以使用read/write和其他类似函数对其进行操作。
open() 是由 POSIX 兼容操作系统提供的标准化系统调用(大多数类似 POSIX 的操作系统也有open() 系统调用)。 fopen() 是 C 实现和/或运行时库提供的 C 库函数。
fopen() 允许缓冲和/或格式化输入/输出,而open() 通常用于更直接的 IO。可以使用open() 系统调用来实现fopen() 函数。
【讨论】:
正如其他人所说,open() 是通过 POSIX 标准的系统调用,主要由 UNIX 系列操作系统支持。它返回 'int' 指示正在打开的文件描述符。
而另一方面 fopen() 是由 C 库提供的,它返回一个 FILE* 指向正在打开的文件。
【讨论】: