为了写入新文件,我执行以下操作:
// 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);