linu上机实习报告.docx

上传人:1513****116 文档编号:94957953 上传时间:2023-08-13 格式:DOCX 页数:32 大小:764.80KB
返回 下载 相关 举报
linu上机实习报告.docx_第1页
第1页 / 共32页
linu上机实习报告.docx_第2页
第2页 / 共32页
点击查看更多>>
资源描述

《linu上机实习报告.docx》由会员分享,可在线阅读,更多相关《linu上机实习报告.docx(32页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、目 录Linux 第一次上机(运行环境 RedHat)1调试运行 CD 唱片应用程序1运行过程1心得体会3编写 shell 脚本,求 1 到 100 的和3运行过程3源代码4编写 shell 脚本,从键盘输入两个数,求这两个数的和4运行过程4源代码5等待特定用户登录,每 30 秒确认一次5运行过程5源代码6找出系统中当前消耗磁盘容量最大的前 10 个用户,并向他们发送警告邮件6运行过程6源代码8查找输入文件的路径8运行过程8源代码9Linux 其次次上机(运行环境 RedHat)9定制自己的 ls 命令。供给至少三种带参数的执行方式9运行过程9源代码11调试编译串行口通信程序 p6.5.c.1

2、6运行过程16Linux 第三次上机(运行环境 RedHat,CentOS)16创立一个系统监听守护进程,一旦接收到其他进程发来的信号,马上给出报告16运行过程16源代码18分别利用本地 socket 套接字和INTENET 套接字实现进程间文件传输20本地 socket 套接字运行过程20本地 socket 套接字效劳器server1.c 源代码22本地 socket 套接字客户端client1.c 源代码23INTENET 套接字运行过程25INTENET 套接字效劳器 server2.c 源代码28INTENET 套接字客户端client2.c 源代码29感谢与收获30Linux 第一次

3、上机(运行环境 RedHat)调试运行 CD 唱片应用程序运行过程图表 1 第一步,使用./CD 命令运行 CD 脚本图表 2 进入选项界面图表 3 增加 CD图表 4 查找 CD图表 5 查询数目图表 6 退出心得体会通过运行书上的 CD 唱片应用程序,进一步地了解到 shell 编程的方法,以及编写程序的思路。编写 shell 脚本,求 1 到 100 的和运行过程图表 7 使用./sum1to100 运行源代码图表 8 使用 cat sum1to100 查看源代码编写 shell 脚本,从键盘输入两个数,求这两个数的和运行过程图表 9 使用./sumAandB运行图表 10 使用 cat

4、 sumAandB 查看源代码等待特定用户登录,每 30 秒确认一次运行过程特定用户是 zzx,我首先让 root 用户登录并运行程序,可以觉察每隔 30s 提示一次图表 11 使用./checkuser 运行当我切换到 zzx 用户,并再次运行程序,可得如下结果图表 12 使用 cat checkuser 查看代码找出系统中当前消耗磁盘容量最大的前 10 个用户,并向他们发送警告邮件运行过程由于权限等问题,我们使用 root 用户运行程序图表 13 使用./mymail 运行运行完毕后,我们就可以查看邮件了图表 14 root 用户收到的邮件图表 15 zzx 用户收到的邮件图表 16 t1

5、 用户收到的邮件源代码图表 17 使用 cat 命令查看查找输入文件的路径运行过程由于权限的问题,我们使用 root 用户运行程序图表 18 使用./route 运行,并依据要求输入文件名源代码图表 19 使用 cat route 查看源代码Linux 其次次上机(运行环境 RedHat)定制自己的 ls 命令。供给至少三种带参数的执行方式运行过程图表 20 使用./ls 运行不带参数 ls图表 21 使用./ls -l 运行带参数-l 的ls图表 22 使用./ls -a 运行带参数 -a 的ls图表 23 使用./ls -al 运行带参数-al 的ls源代码#include #includ

6、e #include #include #include #include #include #include #include #include intdo_ls(char *dir,char *filename,int lflag)int n;struct stat buf; char out100; struct passwd *pw;struct group *gr; struct tm *t;if(lflag = 0)printf(“%st“,filename); return 0;if(lstat(dir,&buf)=0;n-)if(buf.st_mode&(1pw_name);g

7、r = getgrgid(buf.st_gid); printf(“ %s“,gr-gr_name);printf(“ %ld“,buf.st_size);t = localtime(&buf.st_atime); printf(“ %d-%d-%d %d:%d“,t-tm_year+1900,t-tm_mon+1,t-tm_mday,t-tm_hour,t-tm_min); printf(“ %s “,filename);if(S_ISLNK(buf.st_mode)printf(“ - “); if(readlink(filename,out,100)=-1)/printf(“readli

8、nk errorn“);printf(“%s“,out);printf(“n“); return 0;int ls_prepare(char *w,int aflag,int lflag) struct stat buf;char name100;DIR *dir;struct dirent *pdr;if(lstat(w,&buf)d_name0=”.”) continue;memset(name,0,100); strcpy(name,w); strcat(name,“/“); strcat(name,pdr-d_name); do_ls(name,pdr-d_name,lflag);el

9、sememset(name,0,100); strcpy(name,w); strcat(name,“/“); strcat(name,pdr-d_name); do_ls(name,pdr-d_name,lflag);closedir(dir);elsedo_ls(w,w,lflag);return 0;int main(int argc,char *argv)int aflag =0;int lflag =0; char c;int i;while(c = getopt(argc,argv,“al“)!=-1)switch(c)case ”a”:aflag =1; break;case ”

10、l”:lflag =1; break;default:break;if(argc = optind )elsels_prepare(“./“,aflag,lflag);for(i=optind;iargc;i+) ls_prepare(argvi,aflag,lflag);printf(“n“); return 0;调试编译串行口通信程序 p6.5.c运行过程由于权限问题,我们在 root 用户下运行程序图表 24 使用./mytrunk 不带参数运行图表 25 使用./mytrunk /dev/ttyS0 0 带参数运行Linux第三次上机( 运行环境 RedHat , CentOS)创立一

11、个系统监听守护进程,一旦接收到其他进程发来的信号,马上给出报告运行过程图表 26 首先运行守护进程之后查看 当前进程图表 27 可以觉察守护进程-jincheng 在后台运行,且 PPID=1,PID=4085图表 28 可以觉察守护进程向 test.txt 发送了start图表 29 向守护进程发送终止信号,终止守护进程图表 30 可以觉察后台运行的守护进程没了图表 31 可以觉察守护进程又向 test.txt 发送了 end图表 32 具体查看 test.txt图表 33 具体查看 test.txt 的内容源代码#include #include #include #include #in

12、clude #include #include /* Daemonize myself. */ int fd1;void sigintHandler(int sig)if(sig=SIGTERM)write(fd1,“endn“,5); exit(0);int daemon (int nochdir, int noclose)pid_t pid;pid = fork ;/* In case of fork is error. */ if (pid 0)perror (“fork“); return -1;/* In case of this is parent process. */ if (

13、pid != 0)exit (0);/* Become session leader and get pid. */ pid = setsid;if (pid 2)close (fd);umask (0027);return 0;int main(void)fd1=open(“test.txt“,O_RDWR | O_TRUNC); write(fd1,“startn“,7);daemon(0,0); signal(SIGTERM,sigintHandler); sleep(1000);return 0;分别利用本地 socket 套接字和 INTENET 套接字实现进程间文件传输本地 soc

14、ket 套接字运行过程图表 34 使用./server1 运行效劳器,显示效劳器等待状态图表 35 当在另外一个终端运行客户端程序时, 效劳器显示客户连接,并要求输入传输文件名称图表 36 当效劳器输入文件名称 server1.c 后客户端显示接收信息,不过接收到的文件重定向到test.txt 中图表 37 server1.c 的内容图表 38 客户端接收到显示在 test.txt 的内容,和 server1.c 的内容比较,完全全都本地 socket 套接字效劳器 server1.c 源代码#include #include #include #include #include #inclu

15、de #include #includeint mainint filefd,n; /char file100,buf1024; / int server_sockfd,client_sockfd;int server_len,client_len;struct sockaddr_un server_address; struct sockaddr_un client_address; unlink(“server_socket“);server_sockfd =socket(AF_UNIX,SOCK_STREAM,0); server_address.sun_family =AF_UNIX;

16、 strcpy(server_address.sun_path,“server_socket“); server_len =sizeof(server_address);bind(server_sockfd,(struct sockaddr *)&server_address,server_len); listen(server_sockfd,5);while(1)printf(“server waitingn“); client_len =sizeof(client_address);client_sockfd=accept(server_sockfd,(struct*)&client_ad

17、dress,&client_len);if(client_sockfd!=-1)sockaddrprintf(“you have a client ,please put the filename to transport!n“); scanf(“%s“,file);if(filefd=open(file,O_RDWR)0)write(client_sockfd,buf,n);printf(“you have transport %d bytes and it is end!n“,n); close(client_sockfd);close(filefd);本地 socket 套接字客户端 c

18、lient1.c 源代码#include #include #include #include #include #include#include #include int mainint filefd,n,oldfilefd; / char file100,buf1024;int sockfd; int len;struct sockaddr_un address;int result;sockfd =socket(AF_UNIX, SOCK_STREAM,0); address.sun_family =AF_UNIX; strcpy(address.sun_path,“server_soc

19、ket“); len=sizeof(address);result=connect(sockfd,(struct sockaddr *)&address,len); if(result = -1)perror(“oops:client1“); exit(1);if(result!= -1)oldfilefd=open(“test.txt“,O_RDWR); filefd=dup(oldfilefd); read(sockfd,file,sizeof(file);printf(“the filename you receive is:%sn“,file); if(n=read(sockfd,bu

20、f,sizeof(buf)0)write(filefd,buf,n);printf(“you have received a file which is %d bytes,but the file”s context cover the test.txt,so please check into test.txt!n“,n);close(sockfd);close(filefd); exit(0);INTENET 套接字运行过程图表 39 使用./server2 运行效劳器,显示效劳器等待状态图表 40 当在另外一个终端运行客户端程序时, 效劳器显示客户连接,并要求输入传输文件名称图表 41

21、当效劳器输入文件名称 server2.c 后客户端显示接收信息,不过接收到的文件重定向到test.txt 中图表 42 server2.c 的内容图表 43 客户端接收到显示在 test.txt 的内容,和 server2.c 的内容比较,完全全都INTENET 套接字效劳器 server2.c 源代码#include #include #include #include #include #include #include #include #includeint mainint filefd,n;/char file100,buf4096;/ int server_sockfd,clien

22、t_sockfd;int server_len,client_len;struct sockaddr_in server_address; struct sockaddr_in client_address;server_sockfd =socket(AF_INET,SOCK_STREAM,0);server_address.sin_family=AF_INET; server_address.sin_addr.s_addr=inet_addr(“127.0.0.1“); server_address.sin_port =9734; server_len=sizeof(server_addre

23、ss);bind(server_sockfd,(struct sockaddr *)&server_address,server_len);listen(server_sockfd,5); while(1)printf(“server waitingn“); client_len =sizeof(client_address);client_sockfd=accept(server_sockfd,(struct*)&client_address,&client_len);if(client_sockfd!=-1)sockaddrprintf(“you have a client ,please

24、 put the filename to transport!n“); scanf(“%s“,file);if(filefd=open(file,O_RDWR)文件write(client_sockfd,file,sizeof(file);/传送文件名if(n=read(filefd,buf,sizeof(buf)0)write(client_sockfd,buf,n);printf(“you have transport %d bytes and it is end!n“,n);close(client_sockfd);close(filefd);INTENET 套接字客户端 client2

25、.c 源代码#include #include #include #include #include #include #include #include #includeint mainint filefd,n,oldfilefd;/ char file100,buf4096;int sockfd; int len;struct sockaddr_in address;int result;sockfd =socket(AF_INET,SOCK_STREAM,0); address.sin_family =AF_INET; address.sin_addr.s_addr =inet_addr

26、(“127.0.0.1“); address.sin_port =9734;len =sizeof(address);result=connect(sockfd,(struct sockaddr *)&address,len); if(result = -1)if(result!=-1)perror(“oops:client2“); exit(1);oldfilefd=open(“test.txt“,O_RDWR);filefd=dup(oldfilefd); read(sockfd,file,sizeof(file);printf(“the filename you receive is:%

27、sn“,file); if(n=read(sockfd,buf,sizeof(buf)0)write(filefd,buf,n);printf(“you have received a file which is %d bytes,but the file”s context cover the test.txt,so please check into test.txt!n“,n);close(sockfd);close(filefd);exit(0);感谢与收获通过这几次上机实习,使我更加扎实的把握了有关 Linux C 编程方面的学问,在设计过程中虽然遇到了一些问题,但经过一次又一次的思

28、考,一遍又一遍的检查最终找出了缘由所在,也暴露出了前期我在这方面的学问欠缺和阅历缺乏。实践出真知,通过编程,使我们把握的学问不再是纸上谈兵。过而能改,善莫大焉。在课程设计过程中,我们不断觉察错误,不断改正,不断领 悟,不断猎取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计最终顺当完成了,在设计中遇到了很多问题,最终在教师的指导下,最终游逆而解。在今后社会的进展和学习实践过程中,确定要不懈努力,不能遇到问题就想到要退缩, 确定要不厌其烦的觉察问题所在,然后一一进展解决,只有这样,才能成功的做成想做的事, 才能在今后的道路上披荆斩棘,而不是知难而退,那样永久不行能

29、收获成功,收获喜悦,也永久不行能得到社会及他人对你的认可!实践课诚然是一门专业课,给我很多专业学问以及专业技能上的提升,同时又是一门讲道课,一门辩思课,给了我很多道,给了我很多思,给了我莫大的空间。同时,设计让我感受很深。使我对抽象的理论有了具体的生疏。我认为,在这学期的课程设计中,不仅培育了独立思考、动手操作的力气,在各种其它力气上也都有了提高。更重要的是,在课程设计上,我们学会了很多学习的方法。而这是日后最有用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。这对于我们的将来也有很大的帮助。以后,不管有多苦,我想我们都能变苦为乐, 找寻好玩的事情,觉察其中贵重的事情。就像中国提倡的困难奋斗一样,我们都可以在试验完毕之后变的更加成熟,会面对需要面对的事情。回忆起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以稳固了以前所学过的学问,而且学到了很多在书本上所没有学到过的学问。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论学问是远远不够的,只有把所学的理论学问与实践相结合起来,从理论中得出结论,才能真正为社会效劳,从而提高自己的实际动手力气和独立思考的力气。在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com