学习分享
- 1、Linux中的设备管理
- 1.1、设备管理的特点
- 1.2、设备分类
- 1.3、设备工作原理
- 1.4、Linux设备操作
- 1.5、系统调用和系统API等区别
- 2、文件IO
- 2.1、C库的文件操作
- 2.2、文件描述符
- 2.3、特殊文件描述符
- 2.4、系统调用
- 2.4.1、open系统调用4-1
- 2.4.2、open系统调用4-2
- 2.4.3、write系统调用
- 2.4.4、read系统调用
- 2.4.5、文件的随机读写
- 2.4.6、lseek系统调用6-1
- 2.4.6、lseek系统调用6-2
- 2.4.7、mkdir系统调用
- 2.4.8、rmdir系统调用
- 2.5、打开文件的方式
- 2.6、访问权限
- 2.7、文件打开示例
- 2.8、关闭文件close
1、Linux中的设备管理
Linux采用文件系统管理硬件设备,所有的设备都看成是特殊的文件,从而将硬件设备的特性及管理细节对用户隐藏起来,实现设备无关性。
1.1、设备管理的特点
每个设备都对应文件系统中的一个索引节点,都有一个文件名。
应用程序通常可以通过系统调用open()打开设备文件,建立起与目标设备的连接。
对设备的使用类似于对文件的存取。
设备驱动程序都是系统内核的一部分,它们必须为系统内核或者它们的子系统提供一个标准的接口。
设备驱动程序使用一些标准的内核服务,如内存分配等。
1.2、设备分类
1.3、设备工作原理
1.4、Linux设备操作
1.5、系统调用和系统API等区别
2、文件IO
2.1、C库的文件操作
2.2、文件描述符
2.3、特殊文件描述符
2.4、系统调用
2.4.1、open系统调用4-1
2.4.2、open系统调用4-2
2.4.3、write系统调用
#include <stdio.h>
#include <fcntl.h>
#include <sys/stat.h>
void main()
int outfd = 0, r_size = 0;
char buf[ ] = “Hello world!!”;
outfd = open(“first”,O_WONLY | O_TRUNC | O_CREAT,S_IRWXU);
if(outfd>0)
{
r_size = write(outfd,buf,sizeof(buf));
if(r_size>0)
{
printf(“write data to file success”);
}
close(outfd);
}
}
2.4.4、read系统调用
2.4.5、文件的随机读写
2.4.6、lseek系统调用6-1
2.4.6、lseek系统调用6-2
2.4.7、mkdir系统调用
2.4.8、rmdir系统调用
2.5、打开文件的方式
2.6、访问权限
2.7、文件打开示例
#include <fcntl.h>
#include <sys/stat.h>
#include <stdio.h>
#include <unistd.h>
void main()
{
int outfd = 0;
outfd = open(“myfile",O_WRONLY|O_CREAT|O_TRUNC,S_IRWXU|S_IRGRP);
if(outfd==-1)
{
perror(“fail to open file\n”);
exit(-1);
}
else
{
perror(“success to open file\n”);
}
close(outfd); //关闭文件描述符
}