open函数是Unix下系统调用函数,操作成功返回的是文件描述符,操作失败返回的是-1
fopen是ANSIC标准中C语言库函数,所以在不同的系统中调用不同的内核的API,返回的是一个指向文件结构的指针
open函数没有缓冲,open函数一般和write配合使用
fopen函数有缓冲,fopen函数一般和fwrite配合使用
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
// open函数的返回值如果操作成功,它将返回一个文件描述符,如果操作失败,它将返回-1
int open(const char *pathname, int flags);
// pathname->打开的文件路径名,或者文件名
// flags
int open(const char *pathname, int flags, mode_t mode);
#include <sys/stat.h>
// umask函数,它可以为进程设置文件模式创建屏蔽字,并返回之前的值。
mode_t umask(mode_t cmask);
修改进程的umask值并不会影响其父进程的umask值。
并且如果想要新创建文件的访问权限完全由用户决定,那么只需在调用open函数前用umask函数将umask值置为0即可。
umask(0);
open("file1", O_CREAT, 0644);
原文:https://www.cnblogs.com/lodger47/p/14824689.html