嵌入式Linux应用编程-文件IO

近期学习了下嵌入式Linux应用编程,一边学习一边记录下关键知识,也是在学习的过程进行下简单梳理。

文件I/O

用户在应用开发过程中会经常需要访问文件。Linux下访问文件的方式有两大类:标准I/O和文件I/O。

文件I/O特点:
(1)posix(可移植操作系统接口)定义的一组函数。
(2)不带缓冲机制,每次操作都引起系统调用。
(3)通过文件描述符来访问文件。
(4)访问各种类型文件(7种:- d c b s l p)。

1、文件类型
-:普通文件:可执行文件、文本文档、脚本
d:目录文件
c:字符设备
b:块设备
s:网络设备、socket
l:软链接
p:管道

2、文件描述符
每个打开的文件都对应一个文件描述符。
文件描述符是一个非负整数。Linux为程序中每个打开的文件分配一个文件描述符。
文件描述符从0开始分配,依次递增。
在文件IO中默认打开了三个文件描述符0,1,2。对应标准输入、标准输出、标准出错。

3、接口

  1. 打开文件
    int open(const char *pathname, int flags);
    功能:打开一个文件,并且返回一个文件描述符供后续读写类接口使用。
  2. 读文件
    ssize_t read(int fd, void *buf, size_t count);
    功能:从文件描述符为fd的文件/设备读取最大count个字节的数据
  3. 写文件
    ssize_t write(int fd, const void *buf, size_t count);
    功能:从buf写入到fd文件中,最大写count个字节
  4. 文件定位
    off_t lseek(int fd, off_t offset, int whence);
    功能:实现文件的定位操作
  5. 获取文件信息
    int stat(const char *path, struct stat *buf);
    功能:获取文件信息
  6. 关闭文件
    int close(int fd);
    功能:关闭fd文件
  7. 创建目录
    int mkdir(const char *pathname, mode_t mode);
    功能:创建一个目录
  8. 打开目录
    DIR *opendir(const char *name);
    功能:获得目录流
  9. 读目录
    struct dirent *readdir(DIR *dirp);
    功能:读目录
  10. 关闭目录
    int closedir(DIR *dirp);
    功能:关闭目录流

4、代码样例

int main(int argc, char const *argv[])
{
	int fd;
	int nbytes;
	char buf[100] = "hello IO";

	//如果参数小于规定个数,那么提示用法
	if(argc < 2){
		printf("%s <filename>\n", argv[0]);
		return -1;
	}

	fd = open(argv[1], O_RDWR|O_CREAT, 0777);
	if(fd < 0){
		perror("open err");
		return -1;
	}else{
		printf("open success\n");
	}

	//写入内容
	nbytes = write(fd, buf, strlen(buf));
	if(nbytes < 0){
		perror("write err");
		return -1;
	}else{
		printf("write success\n");
	}

	close(fd);
	
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值