linux文件编程——系统调用(打开、写入、读取、访问判断)

linux文件编程有两个方法:1、linux系统调用 2、C语言函数库
前者依赖的是linux系统,后者独立于操作系统而存在,不依赖于任何操作系统,因此,在不同的操作用使用C语言函数库的方法是一样的。

linux系统调用:
创建文件使用creat函数
函数原型:int creat(文件路径,创建模式)
常见创建模式:
S_IRUSR 文件可读
S_IWUSR 文件可写
S_IXUSR 文件可执行
S_IRWXU 文件可读可写可执行
也可以用数字来表示操作模式:1——可执行 2——可写 4——可读 0——无任何权限 6——可读可写

打开文件使用open函数
函数原型:int open(要打开的文件名包含路径,打开标志)
int open(要打开的文件名包含路径,打开标志,文件访问权限)
open函数成功打开一个文件后会返回一个文件描述符,打开失败则返回-1

打开标志:
O_RDONLY 以只读方式打开文件
O_WRONLY 以只写方式打开文件
O_RDWR 以读写方式打开文件
O_CREAT 当要打开的文件不存在时,创建这个文件
O_NONBLOCK 以无阻塞方式打开文件

注意:当使用O_CREAT标志时,open 函数就需要使用第二个函数原型,即: int open(要打开的文件名包含路径,打开标志,文件访问权限) 第三个参数用于创建文件时设定文件的权限。

关闭文件使用close函数
函数原型:int close(文件描述符)

读取文件内容使用read函数
函数原型:int read(文件描述符,存放数据的缓冲区,读取数据的字节数)
read函数会从文件描述符指向的文件中读取指定的字节数,并存放在缓冲区中

判断文件的访问权限用access函数
函数原型:int access(文件路径,模式)
模式:R_OK 判断文件是否可读
W_OK 判断文件是否可写
F_OK 判断文件是否存在
X_OK 判断文件是否可执行
当判断成功时,函数返回0,不成功时返回-1

  1 #include <stdio.h>
  2 #include <sys/types.h>
  3 #include <sys/stat.h>
  4 #include <fcntl.h>
  5 #include <stdlib.h>
  6 #include <string.h>
  7 #include <unistd.h>
  8 #define FIFE "/home/book/c_code/test_fife"
  9 
 10 int main(int argc,char **argv)
 11 {
 12     int fd;   //文件描述符
 13     char buf[40];   //缓冲区
 14 
 15     memset(buf,0,sizeof(buf));
 16 
 17     if (access(FIFE,F_OK)!=0) {
 18         creat(FIFE,0666);
 19     }
 20 
 21     fd = open(FIFE,O_RDWR);  //打开文件
 22     write(fd,"hello world",12);  //写数据
 23     close(fd);
 24     fd = open(FIFE,O_RDWR);
 25     read(fd,buf,12);   //读数据
 26 
 27     printf("read %s from fife\n",buf);
 28 
 29     return 0;
 30 }

运行效果
在这里插入图片描述
注意:在write函数后必须关闭文件描述符,再使用read函数。如果在写函数后直接使用读函数,将不会读取到数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值