操作系统课程设计文件系统ls实现与内核编码.docVIP

  • 96
  • 1
  • 约1.59万字
  • 约 25页
  • 2017-09-08 发布于陕西
  • 举报

操作系统课程设计文件系统ls实现与内核编码.doc

西 安 邮 电 大 学 (计算机学院) 操作系统课程设计报告 题 目:文件系统ls实现与内核编码 专业名称: 班 级: 学生姓名: 学号(8位): 指导教师: 设计起止时间: 2014年月日年月日1.ls #include grp.h #include pwd.h #include time.h #include stdio.h #include stdlib.h #include string.h #include dirent.h #include unistd.h #include sys/stat.h #include sys/ioctl.h #define PARAM_NONE 0 // 无参数 #define PARAM_A 1 // -a: 显示所有文件 #define PARAM_L 2 // -l:一行显示一个文件的详细信息 #define PARAM_U 4 // -u:显示文件最后一次访问时间 #define PARAM_R 8 // -R:递归显示文件与子目录及其内容 #define PATHCOUNT 10 // 递归显示目录功能中子目录的数量 int restLen = 0; // -l打印详细信息时一行剩余长度 int maxFileLen = 0; // 存放某目录下最长的文件名的长度 int total = 0; // -l显示的总用量 int hasDir = 0; // -R中标志位,在当前目录下是否找到子目录 int dirCount = 0; // -R中目前递归找到的子目录的数量 int dirShow = 0; // -R已显示相关信息的子目录的数量 int line = 0; // 屏幕的宽度 char dirPath[ PATHCOUNT ][ PATH_MAX + 1 ] = { \0 }; // -R中存储子目录路径 void DirRead( int, char * ); int Compare( const void *, const void * ); int CompareU( const void *, const void * ); void DisposeParam( int, char * ); int HasDirs( char * ); void ShowFileName( char * ); void ShowFilesInfo( struct stat, char *, int ); int main( int argc, char ** argv ) { int i, j, k; int paramCount, paramFlag; char path[ PATH_MAX + 1 ]; // 保存命令行中路径 char params[ 20 ]; // 存储参数 struct stat st; struct winsize size; j = 0; paramCount = 0; // 带参数的命令行数量 paramFlag = PARAM_NONE; // 参数标志位,初始无餐 // 获取屏幕宽度 ioctl(STDOUT_FILENO, TIOCGWINSZ, size); line = size.ws_col; restLen = line; // 读取命令行中的参数 for ( i = 1; i argc; i++ ) if ( argv[ i ][ 0 ] == - ) { for ( k = 1; k strlen( argv[ i ]); k++, j++ ) params[ j ] = argv[ i ][ k ]; paramCount++; params[ j ] = \0; } // 判断当前命令的参数,更新参数标记位 for (i = 0; i j; i++) switch( params[ i ] ) { case a: paramFlag |= PARAM_A; break; case l: paramFlag |= PARAM_L; break; case u: paramFlag |= PARAM_U; break; case R: paramFlag |= PARAM_R; break; default:

文档评论(0)

1亿VIP精品文档

相关文档