信安系统学习笔记四
知识点归纳
1.文件操作级别
(1)硬件级别
硬件级别的文件操作包括:
fdisk:将硬盘、U盘或SDC盘分区。
mkfs:格式化磁盘分区,为系统做好准备
fsck:检查和维修系统
碎片整理:压缩文件系统中的文件
(2)操作系统内核中的文件系统函数:每个操作系统内核均可为基本文件操作提供支持
(3)系统调用:用户模式程序使用系统调用来访问内核函数
(4)I/O库函数
(5)用户命令:用户可以使用Unix/Linux命令来执行文件操作而不是编写程序
用户命令的示例如下:
mkdir,rmdir,cd,pwd,ls,link,unlink,rm,cat,cp,mv,chmod,etc.
每个用户命令实际上是一个可执行程序(cd除外),通常会调用库I/O函数,而库I/O函数再发出系统调用来调用相应的内核函数。
2.文件I/O操作
低级别文件操作
分区
Command (m for help): m ---输出帮助信息
Command action
a toggle a bootable flag ---设置启动分区
b edit bsd disklabel ---编辑分区标签
c toggle the dos compatibility flag
d delete a partition --删除一个分区
l list known partition types --列出分区类型
m print this menu --帮助
n add a new partition --建立一个新的分区
o create a new empty DOS partition table --创建一个新的空白DOS分区表
p print the partition table ---打印分区表
q quit without saving changes ---退出不保存设置
s create a new empty Sun disklabel ---
t change a partition's system id ---改变分区的ID
u change display/entry units ---改变显示的单位
v verify the partition table ---检查验证分区表
w write table to disk and exit ---保存分区表
x extra functionality (experts only)
3.系统调用函数
write系统调用
write,就是把缓冲区的数据写入文件中。注意,这里的文件时广泛意义的文件,比如写入磁盘、写入打印机等等。
Linux 中write()的函数原型:
size_t write(int fildes, const void *buf, size_t nbytes);
参数说明:
fildes:文件描述符,标识了要写入的目标文件。例如:fildes的值为1,就像标准输出写数据,也就是在显示屏上显示数据;如果为 2 ,则想标注错误写数据。
*buf:待写入的文件,是一个字符串指针。
nbytes:要写入的字符数。
函数返回值:size_t 返回成功写入文件的字符数。需要指出的是,write可能会报告说他写入的字节比你所要求的少。这并不一定是个错误。在程序中,你需要检查
error已发现错误,然后再次调用write写入剩余的数据。
read系统调用
系统调用read是从文件中读出数据。要读取的文件用文件描述符标识,数据读入一个事先定义好的缓冲区。他返回实际读入的字节数。
Linux中read的函数原型:
size_t read(int fildes, void *buf, size_t nbytes);
参数说明:
fildes:文件描述符,标识要读取的文件。如果为0,则从标准输入读数据。类似于scanf()的功能。
*buf:缓冲区,用来存储读入的数据。
nbytes:要读取的字符数。
返回值:size_t返回成功读取的字符数,它可能会小于请求的字节数。
系统调用open的作用是打开一个文件,并返回这个文件的描述符。
简单地说,open建立了一条到文件或设备的访问路径。如果操作成功,它将返回一个文件描述符,read和write等系统调用使用该文件描述符对文件或
设备进行操作。这个文件描述符是唯一的,他不会和任何其他运行中的进程共享。如果两个程序同时打开一个文件,会得到两个不同的问价描述符。
Linux中open的函数原型有两个:
int open(const char *path, int oflags);
int open(const char *path, int oflags, mode_t mode );
参数说明:
path:准备打开的文件或设备名字。
oflags:指出要打开文件的访问模式。open调用必须指定如下所示的文件访问模式之一:
open调用可以在oflags参数中包括下列可选模式的组合(用”按位或“操作):
O_APPEDN: 把写入数据追加在文件的末尾。
O_TRUNC: 把文件长度设为零,丢弃以后的内容。
O_CREAT: 如果需要,就按参数mode中给出的访问模式创建文件。
O_EXCL: 与O_CREAT一起调用,确保调用者创建出文件。使用这个模式可防止两个程序同时创建一个文件,如果文件已经存在,open调用将失败。
实践内容与截图
复制文件