1、熟悉Linux文件系统的文件和目录结构,掌握Linux文件系统的基本特征;
2、模拟实现Linux文件系统的简单I/O流操作:备份文件。
1、浏览Linux系统根目录下的子目录,熟悉每个目录的文件和功能;
2、设计程序模拟实现Linux文件系统的简单I/O流操作:备份文件。
目录 描述
/ 根目录
做为基础系统所需要的最基础的命令就是放在这里。比如 ls、cp、mkdir等命令;功能和/usr/bin类似,这个目录中的文件都是可执行的,普通用户都可以使用的命令。
Linux的内核及引导系统程序所需要的文件,比如 vmlinuz initrd.img 文件都位于这个目录中。在一般情况下,GRUB或LILO系统引导管理器也位于这个目录;启动装载文件存放位置,如kernels,initrd,grub。一般是一个独立的分区。
一些必要的设备,声卡、磁盘等。还有如 /dev/null. /dev/console /dev/zero /dev/full 等。
系统的配置文件存放地. 一些服务器的配置文件也在这里;比如用户帐号及密码配置文件;
/etc/opt:/opt对应的配置文件
/etc/X11:Xwindows系统配置文件
/etc/xml:XML配置文件
……
用户工作目录,和个人配置文件,如个人环境变量等,所有的账号分配一个工作目录。一般是一个独立的分区。
库文件存放地。bin和sbin需要的库文件。类似windows的DLL。
可拆卸的媒介挂载点,如CD-ROMs、移动硬盘、U盘,系统默认会挂载到这里来。
临时挂载文件系统。这个目录一般是用于存放挂载储存设备的挂载目录的,比如有cdrom 等目录。可以参看/etc/fstab的定义。
可选的应用程序包。
操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录伪装的文件系统proc的挂载目录,proc并不是真正的文件系统,它的定义可以参见 /etc/fstab 。
Root用户的工作目录
和bin类似,是一些可执行文件,不过不是所有用户都需要的,一般是系统管理所需要使用得到的。
系统的临时文件,一般系统重启不会被保存。
包含了系统用户工具和程序。
非必须的普通用户可执行命令
标准头文件
/usr/bin/ 和 /usr/sbin/的库文件
非必须的可执行文件
内核源码
该目录存放一些服务启动之后需要提取的数据
没有用到系统函数,用c语言写代码,调用的是
FILE* fopen( const char* path,const char* mode)
文件顺利打开后 指向该流的文件指针就会被返回,如果文件打开失败则返回null.并把错误代码存在errno中
fopen_s:
errno_t fopen_s(FILEpFile,const charfilename,const charmode);
errno_t_wfopen_s(FILEpFile,const wchar_tfilename,const wchar_tmode);
pFile:文件指针将接收到打开的文件指针指向的指针。Infilename:文件名
Inmode :允许访问的类型
返回值:如果成功返回=,失败则返回相应的错误代码
Int fclose(FILE*stream)
Stream: 是一个文件对象的指针指定的数据流被关闭。
返回值: 此方法返回0,如果流成功关闭了则返回EOF
原型
size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
ptr:指向保存结果的指针;size:每个数据类型的大小;count:数据的个数;stream:文件指针
返回值:函数返回读取数据的个数。
原型:
size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );
ptr:指向保存数据的指针;size:每个数据类型的大小;count:数据的个数;stream:文件指针
返回值:函数返回读取数据的个数。写操作fwrite()后必须关闭流fclose()。
先创建一个基础二进制流文件(bct.dat) 路径为:(/home/bct/桌面/bct.dat)
创建一个main函数,然后建立两个文件指针 fp1和fp2,
读取fp1 将fp1读取写入到fp2中,结束;
#include
#include
#include
#include
#define PATH1 "/home/bct/桌面/bct.dat"
#define PATH2 "/home/bct/桌面/tcb.dat"
#define READ_BUFF 1024
int main()
{
FILE *fp1, *fp2;
int c = 0;
char buf[READ_BUFF] = {0};
if ((fp1 = fopen(PATH1, "r")) == NULL) {
printf("get bct.dat fp fail");
exit(1);
}
if ((fp2 = fopen(PATH2, "w")) == NULL) {
printf("get tcb.dat fp fail\n");
exit(1);
}
while((c = fread(buf, sizeof(char), READ_BUFF, fp1)) > 0) {
fwrite(buf, sizeof(char), c, fp2);
}
if(fclose(fp1) != 0) {
puts("close fp1 fail");
}
if(fclose(fp2) != 0) {
puts("close fp2 fail");
}
return 0;
}
程序可以进行对文件的复制,这里只建立的基础文件,说明函数write可以实现写和创建文件共同执行。在做实验的过程中,出现过一次错误,就是文件的路径没有写对。在执行测试的时候,要细心找好文件的具体路径。