Linux系统下的文件操作

学习目标:

        Linux内核中存在一系列具备预定功能的函数,操作系统将这些函数功能抽象为一组被称为
系统调用的接口提供给应用程序使用,open(),read(),write()、Iscek(), close()等都是系统
调用中与 I/O 操作相关的接口。下面对系统调用级的 I/O 接口函数进行讲解。

     首先然我们来回顾一下c语言的文件操作:


 

学习内容:

文件操作函数:

  open()函数:

格式:int open(const char *pathname , int flags[,mode_t mode]);

功能:该函数存在于系统函数库fcntl.h中,是打开或者创建一个文件

参数:pathname:要打开文件的文件路径名;

            flags:文件的访问模式,一般使用一组宏表示;

            mode:可选属性,给定权限。

 read()函数:

格式:ssize_t read(int fd,void * buf,size_t count);

功能:已打开的设备或者文件中读取数据从

参数:fd:fd是open一个文件后赋的值,

            buf:文件中的内容按指定大小存在buf中后续进行输出

            count:最大读取的长度

 write()函数:

格式:ssize_t write(int fd,const void * buf,size_t count);

功能:已打开的设备或者文件中读取数据从

参数:fd:fd是open一个文件后赋的值。

            buf:文件中的内容按指定大小存在buf中后续进行输出

            count:最大读取的长度

lseek()函数:

格式:off_t lseek(int fd, off_t offset, int whence);

功能:作为一个偏移量,表示当前文件的读写位置

参数:fd:fd是open一个文件后赋的值,

            offset:当前偏移量的设置

            whence:控制偏移量的方法。

close()函数

    打开的文件在操作结束后使用close()释放缓存。

            i nt close(int fd);

代码例如:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>

int main(){
	
	int Fd = 0;
	char tempFileName[20] = "gyp.txt";
	//第一部打开文件 
	Fd = open(tempFileName,O_RDWR|O_EXCL|O_TRUNC);
	
	if(Fd == -1){
		perror("file open error.\n");
		exit(-1);
	}//of if
	
	//第二部写入文件 
	int tempLen = 0;
	char tempBuf[100] = {0};
	scanf("%s", tempBuf);
	tempLen = strlen(tempBuf);
	write(Fd, tempBuf, tempLen);
	close(Fd);
	//第三步读取文件 
	Fd = open(tempFileName, O_RDONLY);
	if(Fd == -1){
		perror("file open error.\n");
		exit(-1);
	}//of if
	
	off_t tempFileSize = 0;
	tempFileSize = lseek(Fd, 0, SEEK_END);
	lseek(Fd, 0, SEEK_SET);
	
	while(lseek(Fd, 0, SEEK_CUR)!= tempFileSize){
		read(Fd, tempBuf, 1024);
		printf("%s\n", tempBuf);
	}//of while
	
	close(Fd);
	return 0;

}//of main


学习时间:

2022年5月2日


学习心得

     Linux 系统调用中的文件 I/o又被称为无缓存 I/o。除此之外,在程序编写时我们还
由运行结果可知、read()成功读取指定文件中的数据。
可以使用一种有缓存的 I/O。有缓存的 I/O 又被称为标准 I/0,是符合 ANSI C标准的 1/0
处理。标准 I/O 有两个优点,一是执行系统调用 read()和 write()的次数较少;二是不依赖
系统内核,可移植性强。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

西柚小萌新

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值