首页 > 其他 > 详细

open函数与fopen函数

时间:2021-05-29 12:20:10      阅读:22      评论:0      收藏:0      [点我收藏+]

open函数是Unix下系统调用函数,操作成功返回的是文件描述符,操作失败返回的是-1

fopen是ANSIC标准中C语言库函数,所以在不同的系统中调用不同的内核的API,返回的是一个指向文件结构的指针

open函数没有缓冲,open函数一般和write配合使用

fopen函数有缓冲,fopen函数一般和fwrite配合使用

open函数在Linux下一般用来打开或者创建一个文件

#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);

flags

  • O_RDONLY:只读模式
  • O_WRONLY:只写模式
  • O_RDWR:可读可写
  • O_APPEND 表示追加,如果原来文件里面有内容,则这次写入会写在文件的最末尾。
  • O_CREAT 表示如果指定文件不存在,则创建这个文件
  • O_EXCL 表示如果要创建的文件已存在,则出错,同时返回 -1,并且修改 errno 的值。
  • O_TRUNC 表示截断,如果文件存在,并且以只写、读写方式打开,则将其长度截断为0。
  • O_NOCTTY 如果路径名指向终端设备,不要把这个设备用作控制终端。
  • O_NONBLOCK 如果路径名指向 FIFO/块文件/字符文件,则把文件的打开和后继 I/O设置为非阻塞模式(nonblocking mode)

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);

open函数与fopen函数

原文:https://www.cnblogs.com/lodger47/p/14824689.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!