Linux_ 5.2、Linux下文件I/O函数的使用(不带缓存)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/lucky534528795/article/details/88989431



文件描述符

文件描述符:是一个非零的正整数,他表示了当前程序正在处理的进程,用来区分程序运行中的各个文件


在新建或打开文件时,内核会向进程返回一个文件描述符,文件描述符也作为函数参数来帮助函数正常工作


通常,一个进程启动时,都会打开3个文件:标准输入、标准输出和标准出错处理:
这3个文件分别对应文件描述符0、1和2(也就是宏替换STDIN_FILENO、STDOUT_FILENO和STDERR_FILENO)。

一、open()

用于打开或创建文件,在打开或创建文件时可以指定文件的属性及用户的权限等各种参数
在这里插入图片描述



二、read()

用于将从指定的文件描述符中读出的数据放到缓存区中,并返回实际读入的字节数
在这里插入图片描述



三、write()

用于向打开的文件写数据,写操作从文件的当前指针位置开始
在这里插入图片描述



四、lseek()

用于在指定的文件描述符中将文件指针定位到相应的位置

它只能用在可定位(可随机访问)文件操作中。管道、套接字和大部分字符设备文件是不可定位的,所以在这些文件的操作中无法使用lseek()调用



五、close()

用于关闭一个被打开的文件。当一个进程终止时,所有被它打开的文件都由内核自动关闭(不显示地关闭)
在这里插入图片描述



使用示例

#include <syc/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>	//使用I/O函数需要包含的头文件

int main()
{
	int fd_src;		//存放源文件的文件描述符
	int fd_dest;	//存放目标文件的文件描述符
	char buff[10];	//定义10字节的缓冲区
	int count;		//计数器
	
	fd_src=open("./src.txt",O_RDONLY);
	if(fd_src<0)
	{
		perror("Failed to open src.txt");
		return -1;	//若打开失败则退出程序
	}
	
	fd_dest=open("./dest.txt",O_RDWR|O_CREAT,0600);	
	//↑ 若无dest.txt文件,则创建,且文件权限为0600(文件所有者有读写权限)
	if(fd_dest<0)
	{
		perror("Failed to open dest.txt");
		return -1;
	}
	
	while((count=read(fd_src,buff,10))!=0)	
	//读取源文件10个字符到buff中,返回成功读取的字节数到count,若count为0,则表读文件到末尾,退出循环
	{
		write(fd_dest,buff,count);	//将buff中的count个字符送入目标文件
	}
	close(fd_src);
	close(fd_dest);	//关闭文件
	return 0;	
}

猜你喜欢

转载自blog.csdn.net/lucky534528795/article/details/88989431
今日推荐