操作系统课程设计实验报告(5)
发布时间:2021-06-05
发布时间:2021-06-05
ls命令的实现
打印内核信息的功能组织图如下图5.1-2:
内核模块传入参数的功能组织图如下图5.1-3:
ls命令的实现
5.2原理
linux解释:Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统
linux下c编程与windows下c编程的区别:C标准都是一样的,但是不同的操作系统下有不同的系统API调用,也有不同的编译器!如果只是做简单的练习,不需要调用系统函数的话,是完全一样的,但是在WINDOWS下编译生成的可执行文件在LINUX下是运行不起来的,要在LINUX下运行必须用LINUX下的编译器,比如GCC,这种编译器可以找到WINDOWS版本的,但是编译出来的就在WINDOWS下运行不了!简单说就是不同操作系统下的可执行文件是不能通用的,因为不同的操作系统有不同的进程结构.
文件系统原理:opendir函数的参数为一个绝对路径或者相对路径,返回值为结构体dirent类型的数值或者空值。结构体dirent中包含d_name选项,d_name中是文件名称。Stat函数参数1是文件的绝对路径,参数2是struct stat 结构体的一个参数,ststat("",&info);返回目录的相关信息,st_mode文件类型 st_uid用户(id) st_gid组(id),st_size文件大小 st_nlike文件连接数,st_mtime文件最后修改时间 st_atime最后访问时间,st_ctime文件属性最后改变时间。在<sys/stat.h>有如下定义:
#define S_IFMT 0170000 记录文件的类型#define S_IFREG0100000 regular #define S_IFDIR 0040000directory #define S_IBLK 0060000特殊块 #define S_IFCHR 0020000字符块 #define S_IFIFO 0010000 fifo #define S_IFLNK 0120000文件连接数 #define S_IFSOCK 0140000通道 if(S_ISDIR(mode)) str[0] = 'd';是设备if(S_ISCHR(mode)) str[0] = 'c';字符设备if(S_ISDIR(mode)) str[0] = 'b';块设备if(S_IRUSR & mode) str[1] = 'r';可读if(S_IWUSR & mode) str[2] = 'w';可写if(S_IXUSR & mode) str[5] = 'w';可写if(S_IXGRP & mode) str[6] = 'x'; 可执行if(S_IROTH & mode) str[7] = 'r';可读 if(S_IWOTH & mode) str[8] = 'w';可写if(S_IXOTH & mode) str[9] = 'x';可执行。Struct passwd 结构体中pw_name 用户名,pw_passwd用户密码,pw_uid用户id,pw_gid 组id,pw_gecos真是名称pw_dir用户目录pw_shell shell命令。
mode)
str[3] = 'x';可执行if(S_IRGRP & mode) str[4] = 'r';可读 if(S_IWGRP &
下一篇:高考作文素材:精美散文(76)