为了写入新文件,我执行以下操作:
// some code
...
pfd[i][0] = open(argv[j+1],O_CREAT|O_WRONLY,0600);
问题 :
open使用or和有区别fopen吗?如何使用模式
open打开现有文件append?
open适用于 POSIX 系统。它不能移植到其他系统。fopen是 C 标准的一部分,因此它适用于所有 C 实现。我忽略了open返回文件描述符的区别,其中fopen返回FILE *.
用于O_APPEND打开附加模式。
open是一个不可移植的 POSIX 函数,而它是一个fopen可移植的标准 C 函数。O_APPEND调用时指定open使用附加模式。1) 是的。有一个区别:缓冲或非缓冲 I/O。
open()给你一个 RAW 文件句柄(在你的程序和文件系统中的文件之间没有缓冲区)。
fopen()授予您以流缓冲区模式处理文件的权限。例如,您可以逐行读取/写入数据 (\0)。
使用以下功能时,您会看到很大的不同:fprintf(), fscanf(), fgets(), fflush().
ps:fopen()不比open()。它们是不同的东西。有时您需要流缓冲区 (fopen),有时您需要逐字节工作 (open)。
这是关于流的一个很好的参考:http ://www.cs.cf.ac.uk/Dave/C/node18.html#SECTION001820000000000000000
2)要以附加模式打开,请添加O_APPEND标志:
open(argv[j+1],O_CREAT|O_APPEND|O_WRONLY,0600);