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


服務端程序經常需要操作文件,使用場景比如訪問日志記錄。

現總結下簡單文件操作方式。

 

 

一: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/fopen
C 語言標准庫
頭文件
#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);
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM