16
Gzip 简简简简简简简简简简 简简简 060912

Gzip 简介及命令行参数导读

  • Upload
    quanda

  • View
    70

  • Download
    0

Embed Size (px)

DESCRIPTION

Gzip 简介及命令行参数导读. 吴廷鹏 060912. 提纲. Gzip 简介 Gzip 各文件的主要功能 Gzip 命令行参数用法 Gzip 命令行参数处理导读 实验一. Gzip 简介. GZIP 是一个用于压缩的工具,比起其他的压缩工具,它有更好的压缩效果并可以获得源码。 GZIP 最早由 Jean-loup Gailly 和 Mark Adler 创建,用于 UNIX 系统的文件压缩。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 GZIP 格式的。现今已经成为 Internet 上使用非常普遍的一种数据压缩格式。 原理 - PowerPoint PPT Presentation

Citation preview

Page 1: Gzip 简介及命令行参数导读

Gzip 简介及命令行参数导读

吴廷鹏 060912

Page 2: Gzip 简介及命令行参数导读

提纲 Gzip 简介 Gzip 各文件的主要功能 Gzip 命令行参数用法 Gzip 命令行参数处理导读 实验一

Page 3: Gzip 简介及命令行参数导读

Gzip 简介 GZIP 是一个用于压缩的工具,比起其他的压缩工

具,它有更好的压缩效果并可以获得源码。 GZIP最早由 Jean-loup Gailly 和 Mark Adler 创建,用于 UNIX 系统的文件压缩。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 GZIP 格式的。现今已经成为 Internet 上使用非常普遍的一种数据压缩格式。

原理ftp://pb0511:[email protected]:221/gzip

Page 4: Gzip 简介及命令行参数导读

Gzip 各文件的主要功能 Gzip.c: 程序入口 Deflate.c: 实现文件压缩功能的函数集合,提供对

文件压缩的支持 Inflate.c: 实现文件解压功能的函数集合,提供对

文件解压的支持 Zip.c: 将文件压缩成 gzip 格式 Unzip: 解压 gzip 或 pkzip 格式的文件 Unlzh.c: 解压 lzh 格式的文件 Unlzw.c: 解压 lzw 格式的文件 Unpack.c: 解压 pack 格式的文件

Page 5: Gzip 简介及命令行参数导读

Gzip 各文件的主要功能 Bits.c: 提供对位操作的支持 Getopt.c: 提供对参数解析的支持 Trees.c: huffman 树相关的操作集合,包括

创建新树选择树的类型等 Tailor.c 、 Tailor.h: 配置文件,用于支持

多种编译环境 Util.c: 工具函数集合,包括对缓冲区的操作,

错误处理,文件名的处理等。

Page 6: Gzip 简介及命令行参数导读

Gzip 各文件的主要功能 Gzip 的实现原理分析和文件中各函数的主

要功能详解参见 ftp://pb0511:[email protected]:221/gzip

Page 7: Gzip 简介及命令行参数导读

Gzip 命令行参数用法 -a --ascii ascii text; convert end-of-lines using local conventions -c --stdout write on standard output, keep original files unchanged -d --decompress decompress -f --force force overwrite of output file and compress links -h --help give this help -l --list list compressed file contents -L --license display software license -n --no-name do not save or restore the original name and time stamp -N --name save or restore the original name and time stamp -q --quiet suppress all warnings -S .suf use suffix .suf on compressed files -t --test test compressed file integrity -v --verbose verbose mode -V --version display version number -1 --fast compress faster -9 --best compress better

Page 8: Gzip 简介及命令行参数导读

Gzip 命令行参数用法 Gzip 命令的基本用法:

>gzip test.txt生成 test.gz 的压缩文件,同时不再保留 test.txt

>gzip -d test.gz解压 test.gz ,生成 test.txt 文件

基本用法的缺点: 压缩文件覆盖原文件

Page 9: Gzip 简介及命令行参数导读

Gzip 命令行参数用法 -c: 不改变原文件,将压缩结果标准输出标准输出 >gzip –c test.txt 不改变原文件,同时创建压缩文件 >gzip –c test.txt > test.txz

Page 10: Gzip 简介及命令行参数导读

Gzip 命令行参数用法 -f: 覆盖已经存在的输出文件 -l: 给出压缩文件大小及压缩率信息 -L: Gzip 的软件许可证信息 -q: 忽略所有的警告提示 -S: 指定压缩文件后缀 -t: 测试压缩文件的完整性 -v: 给出文件名和压缩率信息 -V: 给出 Gzip 的版本信息 -1: 快速压缩模式 -9: 最佳压缩模式

Page 11: Gzip 简介及命令行参数导读

Gzip 命令行参数处理导读程序所在位置 : Gzip.c 的 main 函数中。argc: 参数的个数argv: 指向字符串的指针数组

>gzip.exe –d –N test.txz 0 1 2 3集成环境中输入的第一个参数是 argv[1]

int main (argc, argv) int argc; char *argv[];

Page 12: Gzip 简介及命令行参数导读

Gzip 命令行参数处理导读

basename 是 util.c 中的函数,用于取文件名progname=basename(“d:\gzipproj\gzip.exe”);

progname值为” gzip.exe”

progname = basename(argv[0]); proglen = strlen(progname);

/* Suppress .exe for MSDOS, OS/2 and VMS: */ if (proglen > 4 && strequ(progname+proglen-4, ".exe")) { progname[proglen-4] = '\0'; }

Page 13: Gzip 简介及命令行参数导读

while ((optc = getopt_long (argc, argv, "ab:cdfhH?lLmMnNqrS:tvVZ123456789",longopts, (int *)0)) != EOF) {

switch (optc) {case 'c': to_stdout = 1; break;case 'd': decompress = 1; break;case 'h': case 'H': case '?': help(); do_exit(OK); break;case 'l': list = decompress = to_stdout = 1; break;case 'L': license(); do_exit(OK); break;case 'N': no_name = no_time = 0; break;case 'q': quiet = 1; verbose = 0; break;……}

}

可选参数的提取 : getopt_long()可选参数对程序的影响:变量值的改变

>gzip.exe –d –N –q test.txz

解析命令行参数的具体细节可参 Getopt.c 中函数 _getopt_internal()的注释部分

Page 14: Gzip 简介及命令行参数导读

实验一 目的1.熟悉 VC、 BC等编程环境,学会单步跟踪、调试自己的程序;2.了解 project 的创建、使用以及意义;3.熟练定义含指向结构体自身的指针域的结构体类型4.熟练使用 C中的动态分配与释放函数 (malloc, realloc, free);5.熟悉带参数的 main 函数的编写与运行;6. 类 C的引用参数在 C中的变换处理;7.利用输入导向,从文件中获取输入数据。8. 深入理解线性表的特性 , 掌握它在不同存储结构、不同约定下,其 本操作的实现方法与差异

Page 15: Gzip 简介及命令行参数导读

实验内容 下载 Gzip 的源代码,选择一个 C开发工具,编译运行 Gzip

下载 ch2.rar并阅读其中的代码。利用 ch2.rar中的内容完成自己的实验。

阅读《数据结构题集》 P79 1.2约瑟夫环,理解约瑟夫环的定义。编写一个程序,该程序根据输入的命令行参数创建一个单循环链表表示的约瑟夫环,然后输出约瑟夫环出列的顺序。命令行格式: 〈可执行程序名〉〈人数 n 〉〈初始的报数上限 m 〉〈密码 1 〉 …… 〈密码n 〉

Page 16: Gzip 简介及命令行参数导读

Thanks!