1 Linux下的文件与目录概念
要理解文件的软硬链接 , 首先来了解了解Linux下的文件的概念吧.
在 UNIX 系统中 , 操作系统为磁盘上的文本与图像、鼠标与键盘等输入设备及网络交互等 I/O 操作设计了一组通用 API ,使他们被处理时均可统一使用字节流方式. 也即是说 , UNIX系统中除进程外一切皆文件, Linux 也保持了这一特性.
另外, 为了便于文件可被分类管理 , 且目录的引入使Linux文件系统形成一颗目录树 . 如下显示了Linux系统的顶层目录结构
/ 根目录
├── bin 存放用户二进制文件
├── boot 存放内核引导配置文件
├── dev 存放设备文件
├── etc 存放系统配置文件
├── home 用户主目录
├── lib 动态共享库
├── lost+found 文件系统恢复时的恢复文件
├── media 可卸载存储介质挂载点
├── mnt 文件系统临时挂载点
├── opt 附加的应用程序包
├── proc 系统内存的映射目录,提供内核与进程信息
├── root root 用户主目录
├── sbin 存放系统二进制文件
├── srv 存放服务相关数据
├── sys sys 虚拟文件系统挂载点
├── tmp 存放临时文件
├── usr 存放用户应用程序
└── var 存放邮件、系统日志等变化文件
Linux 与其他类 UNIX 系统一样并不区分文件与目录:目录是记录了其他文件名的文件。使用命令 mkdir 创建目录时,若期望创建的目录的名称与现有的文件名(或目录名)重复,则会创建失败。
Linux除了不区分目录 , 还把设备当成文件进行处理.
下面代码展示了如何打开设备文件 /dev/input/event5 并读取文件内容 . 文件 event5 表示一种输入设备 , 其可能是鼠标或键盘等 . 查看文件 /proc/bus/input/devices 可知 event5 对应设备的类型 . 设备文件 /dev/input/event5 使用 read() 以字符流的方式被读取。结构体 input_event 被定义在内核头文件 linux/input.h 中.
打开并读取设备文件:
int fd;
struct input_event ie;
fd = open("/dev/input/event5", O_RDONLY);
read(fd, &ie, sizeof(struct input_event));
printf("type = %d code = %d value = %d\n",
ie.type, ie.code, ie.value);
close(fd);