linux下用c语言文件操作open和fopen

时间:2022-01-18 01:13:41

服务端程序经常需要操作文件,使用场景比如访问日志记录。

现总结下简单文件操作方式。

 

 

一:open()

https://baike.baidu.com/item/open/13009226

open是UNIX系统(包括LINUX、Mac等)的系统调用函数,区别于C语言库函数fopen。

头文件

#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h> int open(constchar* pathname,int flags); int open(constchar* pathname,int flags,mode_t mode);   pathname 文件路径,若有多级目录则先建目录 函数原型: 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 mode:生成文件权限,chmod 666 log 相关函数close(fd);write(int fd,char * buf,size_t size);read(int fd,char * buf,size_t size);   使用范例:char path[]="log";int flags=O_RDWR|O_CREAT;flags|=O_APPEND;int fd_open;int ret; if((fd_open=open(path,flags,0666))<0) printf("open error\n");if((ret=write(fd_open,"hello",6))<0) printf("write error\n");else printf("write,%d\n",ret);close(fd_open);
  二:fopen()https://baike.baidu.com/item/fopenC 语言标准库头文件#include <stdio.h>FILE * fopen(const char * path, const char * mode);相关函数:fclose(fp);size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);size_t fread ( void *buffer, size_t size, size_t count, FILE *stream);使用范例: FILE *fp=NULL; if((fp=fopen("flog","a+"))==NULL) { perror("fopen error\n"); }char buf[]="hello";fwrite(buf,5,1,fp);fclose(fp);