为了写入新文件,我执行以下操作:
// some code
...
pfd[i][0] = open(argv[j+1],O_CREAT|O_WRONLY,0600);
问题:
使用open
或fopen
之间有区别吗?
如何使用open
在append
模式下打开现有文件?
答案 0 :(得分:1)
open
是一个不可移植的POSIX函数,fopen
是可移植的标准C函数。O_APPEND
时指定open
以使用追加模式。答案 1 :(得分:1)
open
适用于POSIX系统。它不能移植到其他系统。 fopen
是C标准的一部分,因此它适用于所有C实现。我忽略了open
返回fopen
返回FILE *
的文件描述符的区别。
使用O_APPEND
打开追加模式。
答案 2 :(得分:1)
答案 3 :(得分:1)
1)是的。存在差异:缓冲或非缓冲I / O.
open()
为您提供了一个RAW文件句柄(程序和文件系统中的文件之间没有缓冲区)。
fopen()
授予您在流缓冲模式下处理文件的权限。例如,您可以逐行读取/写入数据(\ 0)。
使用fprintf()
,fscanf()
,fgets()
,fflush()
等函数时,您可以看到很大的不同。
ps:fopen()
并不比open()
好。他们是不同的东西。有时你需要流缓冲区(fopen),有时你需要逐字节(打开)工作。
以下是关于流的好参考: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);