Linux下c语言编程实验讲义.doc
《Linux下c语言编程实验讲义.doc》由会员分享,可在线阅读,更多相关《Linux下c语言编程实验讲义.doc(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课程名:Linux下c语言编程专业:08嵌入式系统工程 专试验1:Linux系统基本shell指令试验2:gcc编译器与多文件交叉包含试验3:库文件的创建与使用试验4:linux系统程序调试行列式求值程序试验5:进程与线程程序调试试验6:TCP程序与试验7:UDP程序试验1 Linux系统基本shell指令实验一 Linux系统基本文件操作试验目的:掌握Linux系统常见的文件操作指令;掌握Linux系统常见的文件形式;试验设备PC机、虚拟机、redhat9,桌面环境KDE试验原理一、Linux系统常见的文件形式(一)为便于用户识别文件形式,操作系统一般使用扩展名来标示文件类型。文件扩展名是文
2、件名的最后一个点之后的部分(在文件 sneakers.txt 中,“txt”是文件的扩展名)。下面简单列出了一些文件扩展名和它们的含义:1. 压缩的和归档的文件.bz2 使用 bzip2 压缩的文件.gz 使用 gzip 压缩的文件.tar 使用 tar(tape archive,磁带归档的简写)压缩的文件,又称 tar 文件.tbz 用 tar 和 bzip 压缩的文件.tgz 用 tar 和 gzip 压缩的文件.zip 使用 ZIP 压缩的文件,在 MS-DOS 应用程序中常见。多数为 Linux 压缩的文件使用 gzip 压缩,因此 Linux 文件中的 .zip 归档较少见。 2.
3、文件格式.au 音频文件.gif GIF 图像文件.html/.htm HTML 文件.jpg JPEG 图像文件.pdf 文档的电子映像;PDF 代表 Portable Document Format(可移植文档格式) .png PNG 图像文件(Portable Network Graphic 的简写,可移植网络图形) .ps PostScript 文件,为打印而格式化过的文件.txt 纯 ASCII 文本文件.wav 音频文件.xpm 图像文件3. 系统文件.conf 一种配置文件。配置文件有时也使用 .cfg。 .lock 锁(lock) 文件;用来判定程序或设备是否正在被使用.rpm
4、 Red Hat 用来安装软件的软件包管理器文件4. 编程和脚本文件.c C 程序语言的源码文件.cpp C+ 程序语言的源码文件.h C 或 C+ 程序语言的头文件.o 程序的对象文件.pl Perl 脚本.py Python 脚本 .so 库文件.sh shell 脚本 .tcl TCL 脚本文件扩展名不总是被使用或被一致地使用。那么,如果一个文件没有扩展名,或者它与它的扩展名不符时怎么办呢?这个时候,file 命令就会对你有所帮助。譬如,你找到了一个叫做 saturday 的文件,它没有扩展名。使用 file 命令,你就可以判定这个文件的类型: file saturday(二)为便于系统
5、磁盘和文件系统的管理,Linux系统将所有Linux 对目录和设备都当作文件来进行处理,这样就简化了对各种不同类型设备的处理,提高了效率。Linux中主要的文件类型分为4种:普通文件、目录文件、链接文件和设备文件。 (1)普通文件 普通文件如同Windows中的文件一样,是用户日常使用最多的文件。它包括文本文件、shell脚本(shell的概念在第2章会进行讲解)、二进制的可执行程序和各种类型的数据。 (2)目录文件 在 Linux 中,目录也是文件,它们包含文件名和子目录名以及指向那些文件和子目录的指针。目录文件是 Linux 中存储文件名的惟一地方,当把文件和目录相对应起来时,也就是用指针
6、将其链接起来之后,就构成了目录文件。因此,在对目录文件进行操作时,一般不涉及对文件内容的操作,而只是对目录名和文件名的对应关系进行了操作。(3)链接文件 链接文件有些类似于 Windows 中的“快捷方式”,但是它的功能更为强大。它可以实现对不同的目录、文件系统甚至是不同的机器上的文件直接访问,并且不必重新占用磁盘空间。 (4)设备文件 Linux 把设备都当作文件一样来进行操作,这样就大大方便了用户的使用(在后面的Linux编程中可以更为明显地看出)。在 Linux 下与设备相关的文件一般都在/dev目录下,它包括两种,一种是块设备文件,另一种是字符设备文件。 块设备文件是指数据的读写,它们
7、是以块(如由柱面和扇区编址的块)为单位的设备,最简单的如硬盘(/dev/hda1)等。字符设备主要是指串行端口的接口设备。Linux中的文件属性Linux中的文件属性如图如示。首先,Linux中文件的拥有者可以把文件的访问属性设成 3 种不同的访问权限:可读(r)、可写(w)和可执行(x)。文件又有 3 个不同的用户级别:文件拥有者(u)、所属的用户组(g)和系统里的其他用户(o)。 第一个字符显示文件的类型: “-”表示普通文件; “d”表示目录文件; “l”表示链接文件; “c”表示字符设备; “b”表示块设备; “p”表示命名管道比如FIFO 文件(First In First Out,
8、先进先出); “f”表示堆栈文件比如LIFO 文件(Last In First Out,后进先出)。 第一个字符之后有3个三位字符组: 第一个三位字符组表示对于文件拥有者(u)对该文件的权限; 第二个三位字符组表示文件用户组(g)对该文件的权限; 第三个三位字符组表示系统其他用户(o)对该文件的权限; 若该用户组对此没有权限,一般显示“-”字符。目录权限和文件权限有一定的区别。对于目录而言,r代表允许列出该目录下的文件和子目录,w代表允许生成和删除该目录下的文件,x代表允许访问该目录二、Linux系统常见文件操作指令(一)DOS 和 Linux 常用命令的对比命令的目的MS-DOSLinuxL
9、inux 的简单实例复制文件Copycpcp thisfile.txt /home/thisdirectory转移文件Movemvmv thisfile.txt /home/thisdirectory列举文件DirlsLs清除屏幕ClsclearClear关闭 shell 提示ExitexitExit显示或设置日期DatedateDate删除文件Delrmrm thisfile.txt把输出“回响”到屏幕上Echoechoecho this message用简单文本编辑器来编辑文件Editgedit(a)gedit thisfile.txt比较文件内容Fcdiffdiff file1 file
10、2在文件中寻找字串Findgrepgrep 词或词组 thisfile.txt格式化软盘format a:(如果软盘是在 A: 中的话)mke2fs 或 mformat(b)/sbin/mke2fs /dev/fd0(/dev/fd0 是 Linux 中与 A: 等同的驱动器)显示命令帮助命令 /?man(c)man 命令创建目录Mkdirmkdirmkdir 目录查看文件Moreless(d)less thisfile.txt重新命名文件Renmv(e)mv thisfile.txt thatfile.txt显示你在文件系统中的位置ChdirpwdPwd用指定的路径(绝对路径,absolut
11、e path)来改换目录cd 路径名cd 路径名cd /directory/directory用一个相对路径(relative path)来改换目录cd .cd .cd .显示时间TimedateDate显示已被使用的内存数量MemfreeFree注:a. Gedit 是图形化文本编辑器;你可以使用其它文本编辑器来代替 Gedit,包括 Emacs 和 vi。b. 这个命令为 DOS 文件系统格式化软盘。c. 某些命令你还 可以使用 info。d. more 分页器也可以用来一个屏幕一个屏幕地在文件中逐页查看。e. mv 命令可以转移文件或重新命名在同一目录下的文件。如果你想重新命名文件,如例
12、中所示,把这个文件“转移”到同一目录中的新名称。(二)几点说明1、关于帮助help命令用于查看所有Shell内置命令的帮助信息。用户可以通过该命令寻求Shell命令的用法,只需在所查找的命令后输入help命令,就可以看到所查命令的内容了。 例如:查看cd命令的使用方法。 $ cd -helpman命令用于用于格式化并显示某一命令的联机帮助手册页。格式:man 选项 命令名如果在用户是在纯文本下登录,可能帮助信息显示太快使用户来不及看清,可使用管道连接指令 如 man gcc |less(使用q退出,可按上下箭头查看)2、关于ls指令和创建链接文件的指令默认情况下,系统不显示隐藏文件及文件属性,
13、如果想显示文件的详细信息,可以使用如下命令 ls al链接文件的指令为:ln -S3、系统管理指令显示系统进程的指令:ps关闭进程的指令 kill关闭系统的指令 poweroff用户管理程序 redhat-config-users /KDE/system settings/users and groups系统日志 redhat-logviewer /KDE/system tools/system logs删除自安装文件:(1) 查看当时安装的时候的文件的详细名字 rmp -qa 查看所有安装的文件,也可以在系统日志中查看(2) 删除 rmp -e系统文本登录方式及图形用户方式配置文件/etc/
14、inittab 方式3 命令行登录;方式5 x-window登录从X-Windows退出 ctrl +art+backspace从文本方式进入x-window startx4、文件压缩和归档压缩文件使用较少磁盘空间,并且比未压缩的大文件下载速度要快。在 Red Hat Linux 中,你可以使用的文件压缩工具有:gzip、bzip2、和 zip。推荐你使用 bzip2 压缩工具,因为它提供了最大限度的压缩,并且可在多数类似 UNIX 的操作系统上找到。gzip 压缩工具也可以在类似 UNIX 的操作系统上找到。如果你需要在 Linux 和其它操作系统如 MS Windows 间传输文件,你应该
15、使用 zip,因为该命令与 Windows 上的压缩工具最兼容。压缩工具文件扩展名解压工具Gzip.gzgunzipbzip2.bz2bunzip2Zip.zipunzip试验2:makefile创建与使用试验目的:1、掌握桌面环境KDE的基本使用方法2、掌握KDE代码编辑器kwrite的基本使用方法3、掌握多源文件编译链接的方式4、掌握makefile的写法试验原理(1)多源文件编译链接的方式编译:狭义的编译是指将高级语言代码翻译成汇编代码;汇编:狭义的汇编是将汇编代码翻译成二进制(机器语言代码)代码,对于出现子程序调用的语句,如果该函数是主文件外部实现的,则在主文件汇编的时候,该调用并不真
16、正去实现该调用。链接:将各个函数的实现文件所汇编成的机器码和主程序链接到一起。形成最终的可执行文件。头文件功能:函数类型声明,全局结构体声明,宏声明。(2)makefile的写法依赖关系:依赖关系主要靠表达符号“:”表示,含义指冒号左侧的符号依赖右侧的符号,或由右侧的符号生成。命令规则:命令规则的第一个符号为TAB符号,一般为编译汇编指令(gcc)或其他shell指令。当命令规则上面的一条依赖文件出现更新时,系统将执行本行代码(3)试验过程使用编辑器kwrite创建相关源文件,各个源文件代码如下:/main.c#include mytool1.h#include mytool2.h#inclu
17、de int main(void)putchar(n);mytool1_print(hello);mytool2_print(hello);return 0;/mytool1.c#include void mytool1_print(char *psz)printf(this is mytool1 print:%sn,psz);/mytool1.hvoid mytool1_print(char *);/mytool2.c#include void mytool2_print(char *psz)printf(this is mytool2 print:%sn,psz);/mytool2.hvo
18、id mytool2_print(char *);/makefilemain:main.o mytool1.o mytool2.ogcc -o main main.o mytool1.o mytool2.omain.o:main.c mytool1.h mytool2.hgcc -c -g main.cmytool1.o:mytool1.c mytool1.hgcc -c -g mytool1.cmytool2.o:mytool2.c mytool2.hgcc -c -g mytool2.c试验报告要求写出各个源文件试验3:linux系统程序调试行列式求值程序试验目的:掌握使用gdb调试程序的
19、方法试验器材:PC机器、redhat9,kde试验原理(1)程序可以被调试的原因程序编译的时候,使用特殊的指令在目标文件之间加入特殊的信息,建立程序目标码和程序源代码之间的联系,调试程序利用这些信息控制程序的流程,帮助程序员分析程序实际执行过程与程序员设计执行过程之间的联系,进而找出程序的错误。(2)调试程序的流程1、编程程序的时候使用-g指令,生成调试版程序;2、在gdb中调入调试版程序;3、在程序的起始位置加入断点 break main4、运行程序5、使用step指令,next指令单步运行程序,使用continue指令运行到程序的下一个断点,使用display,print指令查看和更改变量
20、的数值,分析程序的实际运行过程和设计过程之间的差别。(3)要调试程序如下:#include stdio.h#include time.h#define MUCH_ZEROtypedef int Type;Type* JZyzs(Type *b,Type *a,int nn,int i,int j ) int m,n,N=nn-1; for(m=0; mi; m+) for(n=0; nj; n+) bm*N+n=am*nn+n; for(; nN; n+) bm*N+n=am*nn+n+1; for(; mN; m+) for(n=0; nj; n+) bm*N+n=am*nn+nn+n; f
21、or(; nN; n+) bm*N+n=am*nn+nn+n+1; return b;Type HLSabsDigui(Type *a, unsigned int n) unsigned int i,j,k; Type T=0,t; Type *p=NULL; if(n=1) return (*a)*n; p=(Type*) malloc(sizeof(Type)*(n-1)*(n-1); if(!p) puts(Err); return 0; for(i=0,t=1; in; i+,t*=-1) JZyzs(p,a,n,0,i); #ifdef MUCH_ZERO if(ai) #endif
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 语言 编程 实验 讲义
限制150内