02、Linux文件系统与设备文件
一、Linux文件操作
1.1、 文件操作系统调用
1、创建文件
int creat(const char *filename, mode_t mode);
2、打开
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
| 文件打开标志 | 含义 |
|---|
| O_RDONLY | 以只读方式打开 | | O_WRONLY | 以只写方式打开 | | O_RDWR | 以读写方式打开 | | O_APPEND | 以追加方式打开 | | O_CREAT | 创建一个文件 | | O_EXEC | 如果使用了O_CREAT而且文件已经存在,就会发生一个错误 | | O_NOBLOCK | 以阻塞方式打开 | | O_TRUNC | 如果文件已经存在,则删除文件的内容 |
| 文件访问标志 | 含义 |
|---|
| S_IRUSR | 用户可读 | | S_IWUSR | 用户可写 | | S_IXUSR | 用户可执行 | | S_IRWXU | 用户可读、写、执行 | | S_IRGRP | 组可读 | | S_IWGRP | 组可写 | | S_IXGRP | 组可执行 | | S_IRWXG | 组可读、写、执行 | | S_IROTH | 其他人可读 | | S_IWOTH | 其他人可写 | | S_IXOTH | 其他人可执行 | | S_IRWXO | 其他人可读、写、执行 | | S_ISUID | 设置用户执行ID | | S_ISGID | 设置组执行ID |
3、读写
int read(int fd, const void *buf, size_t length);
int write(int fd, const void *buf, size_t length);
4、定位
int lseek(int fd, offset_t offset, int where);
| 文件相对位置标志 | 说明 |
|---|
| SEEK_SET | 相对文件开头 | | SEEK_CUR | 相对文件读写指针的当前位置 | | SEEK_END | 相对文件末尾 |
5、关闭
int close(int fd);
1.2、C库文件操作
二、Linux文件系统
| 目录名 | 说明 |
|---|
| /bin | 包含基本命令,这个目录下文件都是可执行的 | | /sbin | 包含系统命令,大多数涉及系统管理命令,这个目录下文件都是可执行的 | | /dev | 设备文件存储目录,用用程序通过对这些文件的读写和控制,以访问实际的设备 | | /etc | 系统配置文件存储目录 | | /lib | 系统库文件存放目录 | | /mnt | 一般用于存放挂在存储设备的挂载目录 | | /opt | 有些软件会被安装在这里 | | /proc | 操作系统运行时,进程及内核信息存放在这个目录。该目录不是真正的文件系统,存在于内存中 | | /tmp | 用户程序运行,有事会产生临时文件 | | /usr | 系统存放程序的目录,比如用户命令,用户库等 | | /var | 目录内的文件内容经常变动 | | /sys | 内核支持的sysfs文件系统被映射到此目录 |
|