ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:22.16KB ,
资源ID:3573965      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3573965.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(LinuxA实验报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

LinuxA实验报告.docx

1、LinuxA实验报告Linux程序设计A实验报告 姓 名: 学 号: 班 级: 指导老师:提交日期: 实验一 Linux基本命令的使用1、实验目的学习和掌握Linux的基本命令。2、实验内容和步骤步骤1:登陆系统,进入文字工作界面。步骤 2:进入图形界面。步骤3:使用pwd命令察看当前的工作目录,然后用ls命令查看当前目录下的内容,尝试使用-a,-l,-F,-A,-lF等不同选项并比较不同之处。所有文件(包括.开始的隐藏文件),_-l详细信息,-A与a相似,但并不列出.以及.两目录名。-F分类(如一般是目录后跟/,执行文件后面加*)。步骤4:在当前目录下建立一个名为test的新目录,然后将工作

2、目录切换到test下,尝试将/etc目录下的文件passwd拷贝到该目录下(cp 源文件 目的目录)。察看当前目录下的passwd文件的属主和文件权限。mkdir test , cd test , cp /etc/passwd passwd, ls l passwd. 步骤5:步骤6:用ls命令查看test下文件的权限,用mv命令更改文件password的文件名为test.txt,尝试用chown和chgrp更改文件的属主为root、组为root,看看能否成功,不成功,请说明原因。尝试用chomd将文件权限为“-rw-”。看看能否成功,不成功,请说明原因。 Chown root test.tx

3、t:Operation not permitted; Chgrp root test.txt:Operation not permitted;2步骤7:用rm命令删除test目录下的所有文件,再用rmdir命令删除test目录。(想一想有没有一条命令将目录及目录下的所有文件删除,写出这条命令)rm -rf test步骤8:使用ps命令查看当前系统内的进程,并利用man命令获取ps命令的参数,写出获取当前终端进程执行情况的ps命令。ps A ps - report a snapshot of the current processes步骤9:使用df命令查看当前系统已安装的文件系统的空间使用情况

4、,记录结果。步骤10:使用du命令查看用户的工作目录占用了多少空间,记录结果。11:使用free命令查看内存资源的使用情况,记录结果。步骤12:使用man获取tar和gzip的帮助信息,尝试将test目录下的文件打包并压缩,然后到另外一目录tmp下解包,写出这几条命令。 Man tar; man gzip;打包:tar -cvf mytar.tar /home/student/mydir/*解压:tar -xzvf mytar.tar -c /tmp/mydir步骤13:尝试执行“ls l tmp”,看看这条命令的执行会出现什么结果,解释一下这条命令。结果:tmp文件中保存的是“ls -l”操

5、作的结果。该命令的意思是把”ls -l“的结果重定向输出到tmp文件,如果tmp不存在就新建它,并写入。步骤14:尝试执行find /usr/src -name “*.c” -print | xargs grep “#include”,看看这条命令的执行会出现什么结果,解释一下这条命令。_在/usr/src目录下的C语言源程序文件中查找含有”#include”内容的行步骤15:执行cal和date命令,说说这两条指令的用途。 答:如图,cal命令输出系统当前时间月份的日历,date显示当前系统时间。步骤16:执行命令clear和logout,退出系统。(想一想有没有其他的方法,写出这种方法)e

6、xit 步骤17:执行命令shutdown,关闭系统。(想一想有没有更简单的命令,写出这条命令)init 03、实验结论答:相比于windows,在linux下编程更多的是用各种命令来完成任务,而且不可否认的是用命令要比用鼠标点击更快实验二 简单Shell程序设计1、实验目的(1) 学习和掌握vi编辑器的基本使用方法。(2) 学习和掌握编写简单的shell程序。2、实验内容和步骤2.1 vi的使用步骤1:以root用户身份登录进入Linux系统。步骤 2:启动Vi,切换到输入模式,输入一段英文:Thisiaanexercise!WeuseVitoeditit.Left,down,up,righ

7、t步骤3:尝试匹配其中的一串字符,写出这命令及执行结果。步骤4:尝试替换其中的一串字符,写出这命令及执行结果。:s /is/IS步骤5:尝试复制/删除其中的一行或几行文本,写出命令及执行结果。复制:一行 yy n行:nyy或yny删除:一行dd n行:ndd或dnd步骤6:尝试复制/删除其中的一个单词或几个字符,写出命令及执行结果。复制:yw、ny 删除:dw、nx步骤7:尝试使用鼠标复制文本,写出命令及执行结果。步骤8:尝试存盘退出操作,写出命令:wq2.2 简单的shell程序步骤1:使用Vi将程序清单2-1的程序输入。步骤 2:尝试运行该程序,如果不能运行,原因是什么,怎样修改。步骤3:

8、执行程序,写出程序的执行结果。步骤4:阅读程序,掌握shell函数的编写方法,补全函数file_run。for str in lsdoif -f $str ; thenecho $strfidone步骤5:修改程序中的函数uers(),使得显示在线用户时不分行。(提示:可以使用循环,对每个在线用户分别处理。)echo there are who|wc -l users onlineecho -e who arewho|awk print $13、实验结论Shell作为linux系统与用户的接口,几乎可以处理一切你所需要做的工作,同时shell是一门解释性的语言但是同样可以作为一门程序语言来用,

9、处理更强大的功能。实验三 Linux下简单C程序设计与文件操作1、实验目的(1) 学习和掌握gcc等Linux的开发调试环境。(2) 学习并掌握Linux的文件操作。2、实验内容和步骤步骤1:使用Vi将程序清单3-1和3-2的程序输入,并在当前目录下创建文件“file.in”和文件“file.out”,尽可能的使文件“file.in”大一些。步骤 2:利用gcc分别编译这两个程序,写出编译命令和执行结果,如果不成功,尝试利用gdb调试。 Gcc -o 3-1 3-1.c gcc -o 3-2 3-2.cresult: file.out has been written the content

10、of file.in.步骤3:仔细观察这两个程序,比较标准C的文件操作和Linux的系统调用open、read、write等的使用区别。 While using the standard file operation of C,you should use the file pointer to open the objective file,while you use the system function of Linux to open the objective file,you can use a file identify to point the file.步骤4:按照说明重新修

11、改程序3-2,并使用time命令察看程序执行的时间效率上有何区别。 5:输入、编译并运行程序3-3和3-4,写出执行结果,并比较他们fseek和lseek在使用方法上的异同答:一个是底层的系统调用,另一个是库函数调用,其效率略有差距,同时参数也不同。3、实验结论在windows下学习了一些关于文件的标准库函数的使用,标准库函数通过文件指针对文件进行操作,相对于标准库函数,linux提供了一个系统调用,返回文件描述符的形式对文件进行读写操作,更加简便。实验四 Linux文件编程1、实验目的(1) 学习和掌握gcc等Linux的开发调试环境。(2) 学习并掌握Linux的文件操作。(3) 编写并实

12、现实验步骤1要求的程序。2、实验内容和步骤 步骤1:学习并分别使用标准C的文件操作函数和Linux的系统调用创建一个对学生基本信息进行操作(插入、修改和删除)的C程序,学生基本信息以结构体的形式存储在文件stu.info中,struct stu_info的定义如下:struct stu_info char stu_num12; char name10; short int sex;/*0为女生,1为男生*/ char mobile_phone12;Linux下进程操作与进程间通信1、实验目的(1) 学习和掌握fork等系统调用的基本使用方法。(2) 利用Linux中的管道实现父子进程间的同步。

13、2、实验内容与步骤步骤1:使用Vi将程序清单4-1的程序输入、编译并运行,学习和掌握fork的基本调用方法。步骤 2:使用Vi将程序清单4-2、4-3和4-4的程序输入、利用gcc分别编译这三个程序,写出编译命令和编译结果,如果不成功,尝试利用gdb调试。Gcc -o 52 52.c gcc -o child child.c gcc -o father father.c步骤3:写出编译这三个程序的makefile,然后利用make进行编译,谈谈这么做的好处。PROGS = 52 child fatherCC = gccCFLAGS = -Wall -I -O2 -gall: $(PROGS)5

14、2:52.o $CC $CFLAGS -o $ 52.ochild:child.o $CC $CFLAGS -o $ child.ofather:father.o $CC $CFLAGS -o $ father.o步骤4:运行这三个程序,写出运行结果。 步骤5:屏幕上显示出的执行结果是哪一个进程执行的结果?子进程:child.c步骤6:父进程中的printf有向屏幕输出吗?为什么?答:没有,因为父进程的标准输出已经被重定向。3、实验结论 学习了进程的创建及管道文件的使用, 了解了dup的工作原理。实验六 Linux下进程同步1、实验目的(1) 学习和掌握fork等系统调用的基本使用方法。(2)

15、 利用Linux中的管道实现父子进程间的同步。2、实验内容与步骤步骤1:学习并分别使用基本的父子进程管道通讯编程。学生基本信息以结构体的形式存储在文件stu.info中,struct stu_info的定义如下:struct stu_info char stu_num12; char name10; short int sex;/*0为女生,1为男生*/ char mobile_phone12;要求利用父子进程间的管道通信方式,完成一个并发的文件操作程序。要求启用两个进程,其中父进程接受用户对文件stu.info的操作命令(含有关数据)然后通过管道发给子进程,子进程完成对文件的实际操作。3、实

16、验结论 通过本次实验我学习了如何使用信号,如何在父子进程之间进行通信,怎么样通过自定义信号实现自己想要的功能。信号在父子进程或者进程与进程之间提供了一种通信方式,相比用一个变量来去控制,信号解放了CPU,提高了CPU的使用效率。实验七 简单Linux线程编程1、实验目的学习和掌握Linux线程的创建以及同步方法。2、实验内容和步骤步骤1:假设有两个线程共享使用一个缓冲区,一个线程向该缓冲区中写数据,另外一个线程将数据读出并进行统计数据字符个数相关处理.试用两个信号量来控制它们之间的关系。步骤 2:在上述程序设计中,pthread_create函数中有几个参数,分别起什么作用?根据该函数,试说明

17、两线程间参数传递的方式。编译该线程的gcc命令是什么?答:四个参数,第一个参数为指向线程标识符的指针。第二个参数用来设置线程属性。第三个参数是线程运行函数的起始地址。最后一个参数是运行函数的参数。Gcc -o object_name filename.c -lpthread步骤3:与教材中的thread3a.c相比,用两个信号量有什么好处?答:当缓冲区中没有数据时防止第二个线程读错误的数据或非法访问内存。3、实验结论本次实验使我深刻的理解了信号量是如何使用的,怎样巧妙的使用信号量使程序更加稳健,对线程的创建及使用更加熟悉,同时程序中需要注意的问题,信号量用完要释放。实验代码: #include

18、 #include #include #include #include #include #define BUF 1024#define ERR EXIT_FAILURE#define SUC EXIT_SUCCESSsem_t empty,full;char workBUF;void *write_data() int i; while(1) sem_wait(&empty); printf(nthread id is %d:n,(int)pthread_self(); printf(Writing(Input to exit).n); i=0; while(worki+=getchar(

19、)!=n) if(worki-1=) sem_post(&full); sem_post(&empty); break; if(workBUF-1!=0) printf(Work size is full! Waiting for reading .n); sem_post(&full); pthread_exit(Thread1 exit!n);void *read_data() int j; while(1) sem_wait(&full); printf(nThread id is %dn,(int)pthread_self(); j=0; printf(Read data from b

20、uffer:); while(workj+!=0) if(workj-1=) sem_post(&full); printf(%c,workj); sem_post(&empty); pthread_exit(Thread2 exit!n);int main(int argc,char* argv) int res,ret1,ret2; pthread_t thd1,thd2; void *thd_ret1,*thd_ret2; printf(nThread id is %dn,(int)pthread_self(); memset(work,0,sizeof(work); res=sem_i

21、nit(&empty,0,1); res=sem_init(&full,0,0); ret1=pthread_create(&thd1,NULL,write_data,NULL); ret2=pthread_create(&thd2,NULL,read_data,NULL); ret1=pthread_join(thd1,&thd_ret1); ret2=pthread_join(thd2,&thd_ret2); res=sem_destroy(&empty); res=sem_destroy(&full); 实验八 Linux线程同步1、实验目的学习和掌握Linux线程的创建以及同步方法。2

22、、实验内容和步骤步骤1:学习并分别使用基本的并发线程编程。学生基本信息以结构体的形式存储在文件stu.info中,struct stu_info的定义如下:struct stu_info char stu_num12; char name10; short int sex;/*0为女生,1为男生*/ char mobile_phone12;要求编写一个基于多线程的程序。一个线程接收对文件的操作(插入、删除、更新、浏览)命令及其相关数据,并将其放到共享变量(全局变量)中,与另外一个线程共享该信息。另一线程取出新信息(命令与数据),分析这些信息后,完成文件操作(插入、删除、更新、浏览)的具体工作。

23、3、实验结论 线程不同于进程,线程很大程度上不需要什么通信方式,需要的只是同步与互斥的问题,因为在一个进程里面的几个子线程直间可以共享变量,线程之间的信息共享要比进程好的多,可以简化程序,提高运行速度。4、删除操作代码 printf(Input the num which you want to delete:); scanf(%s,stuarr10.num); getchar(); sem_init(&del,0,0); /初始化信号量 pthread_create(&thd,NULL,Del,NULL); /创建线程 sem_post(&del); /信号量加一,使子线程继续运行 pthr

24、ead_join(thd,&thd_ret); /等待子线程结束 sem_destroy(&del); /释放该信号量所占有的资源 break; 实验九 Linux进程间的IPC1、实验目的学习和掌握Linux进程间的IPC及同步方法。2、实验内容和步骤步骤1:假设有两个进程程通过共享内存共享使用一个缓冲区,一个进程向该缓冲区中写数据,另外一个进程将数据读出并将取到的数据信息在标准输出设备上输出.试用信号量(含有两个信号量的组)来控制它们之间的关系。2 :为什么要用到两个信号量?答:一个信号量用于控制当缓冲区空时不能读,另一个用于控制当缓冲区满时不能写。步骤3:IPC如何实现经典的P与V操作。

25、如何设计并实现完成P以及V操作的函数?static int semaphore_p(int num,int op,int sem_id) struct sembuf sem_b; sem_b.sem_num=num; sem_b.sem_op=op; sem_b.sem_flg=SEM_UNDO; if(semop(sem_id,&sem_b,1)=-1) fprintf(stderr,semaphore failed!n); return 0; return 1;static int semaphore_v(int num,int op,int sem_id) struct sembuf s

26、em_b; sem_b.sem_num=num; sem_b.sem_op=op; sem_b.sem_flg=SEM_UNDO; if(semop(sem_id,&sem_b,1)=-1) fprintf(stderr,semaphore_v failed!n); return 0; return 1;3.实验结论 共享内存是进程与进程之间的比较简单的一种通信方式,任意两个进程之间都可以通过共享内存来实现信息的共享和交互,不过因为共享内存没有任何保护机制,所以变得不安全,如果存储一些敏感数据,程序运行时发生内存越界非法访问等等很可能造成信息泄露。实验十 Linux进程间IPC的应用1、实验目

27、的学习和掌握Linux进程间的IPC及同步方法。2、实验内容和步骤步骤1:学习并分别使用基本的IPC编程。学生基本信息以结构体的形式存储在文件stu.info中,struct stu_info的定义如下:struct stu_info char stu_num12; char name10; short int sex;/*0为女生,1为男生*/ char mobile_phone12;要求编写一个基于IPC消息队列的程序。一个程序接收对文件的操作(插入、删除、更新、浏览)命令及其相关数据,并将其通过消息队列发给另外一个程序。该程序解析发送过来的数据,并完成文件操作(插入、删除、更新、浏览)的

28、具体工作。3、实验结论实验十一 Linux网络编程基础1、实验目的学习和掌握socket函数的基本使用方法。2、实验内容和步骤步骤1:学习并分别使用基本的Socket编程。学生基本信息以结构体的形式存储在文件stu.info中,struct stu_info的定义如下:struct stu_info char stu_num12; char name10; short int sex;/*0为女生,1为男生*/ char mobile_phone12; 要求编写一个基于Socket的程序。其客户程序接收对文件的操作(插入、删除、更新、浏览)命令及其相关数据,并将其发给服务器。服务器程序解析客户

29、发送过来的数据,并完成文件操作(插入、删除、更新、浏览)的具体工作。3、实验结论实验十二 Linux下并发网络编程实验内容:利用线程实现网络并发编程Server:#include #include #include #include #include #include #include #include #include #include void *fun(void *connfd) int sockfd; char ch; struct sockaddr_in client; sockfd = (int *)connfd; read(sockfd,&ch,1); ch +; sleep(10); write(sockfd,&ch,1); close(sockfd); pthread_exit(NULL);int main() int serv_fd,cli_fd; in

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1