版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中国地质大学(武汉)Linux 程序设计上机实习报告目 录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调试编译串行口通信程序p
2、6.5.c16运行过程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 第一次上机(运行环境RedHa
3、t)调试运行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 sumAandB查看源代码等待特定用户登录,每30秒确认一次运行过程已知特定用户
4、是zzx,我首先让root用户登录并运行程序,可以发现每隔30s提醒一次图表 11使用./checkuser运行当我切换到zzx用户,并再次运行程序,可得如下结果源代码图表 12使用cat checkuser查看代码找出系统中当前消耗磁盘容量最大的前10个用户,并向他们发送警告邮件运行过程由于权限等问题,我们使用root用户运行程序图表 13使用./mymail运行运行完毕后,我们就可以查看邮件了图表 14 root用户收到的邮件图表 15 zzx用户收到的邮件图表 16 t1用户收到的邮件源代码图表 17 使用cat命令查看查找输入文件的路径运行过程由于权限的问题,我们使用root用户运行程
5、序图表 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 #include #include #include #include #include #include #include #include #include in
6、t do_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);gr = getgrgid(buf.st_gid);printf( %s,gr-gr_name);printf( %ld,buf.st_size);t = loca
7、ltime(&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(readlink errorn);printf(%s,out);printf(n);return 0;int ls_prepare(char *w,int aflag,int lflag) stru
8、ct 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);elsememset(name,0,100);strcpy(name,w);strcat(name,/);strcat(name,pdr-d_name);do_ls(name,pdr-d_name,lflag);clos
9、edir(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 l:lflag =1;break;default:break;if(argc = optind )ls_prepare(./,aflag,lflag);elsefor(i=optind;iargc;i+)ls_prepare(argvi,a
10、flag,lflag);printf(n);return 0;调试编译串行口通信程序p6.5.c运行过程由于权限问题,我们在root用户下运行程序图表 24 使用./mytrunk不带参数运行图表 25使用./mytrunk /dev/ttyS0 0带参数运行Linux 第三次上机(运行环境RedHat,CentOS)创建一个系统监听守护进程,一旦接收到其他进程发来的信号,马上给出报告运行过程图表 26首先运行守护进程之后查看 当前进程图表 27可以发现守护进程-jincheng在后台运行,且 PPID=1,PID=4085图表 28可以发现守护进程向test.txt发送了start图表 29
11、向守护进程发送终止信号,终止守护进程图表 30可以发现后台运行的守护进程没了图表 31可以发现守护进程又向test.txt发送了end图表 32具体查看test.txt图表 33具体查看test.txt的内容源代码#include #include #include #include #include #include #include /* Daemonize myself. */int fd1;void sigintHandler(int sig)if(sig=SIGTERM)write(fd1,endn,5);exit(0);int daemon (int nochdir, int no
12、close) 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 (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.tx
13、t,O_RDWR | O_TRUNC);write(fd1,startn,7);daemon(0,0);signal(SIGTERM,sigintHandler);sleep(1000);return 0;分别利用本地socket套接字和INTENET套接字实现进程间文件传输本地socket套接字运行过程图表 34使用./server1运行服务器,显示服务器等待状态图表 35当在另外一个终端运行客户端程序时,服务器显示客户连接,并要求输入传输文件名称图表 36当服务器输入文件名称server1.c后客户端显示接收信息,不过接收到的文件重定向到test.txt中图表 37 server1.c的内
14、容图表 38 客户端接收到显示在test.txt的内容,和server1.c的内容比较,完全一致本地socket套接字服务器server1.c源代码#include#include#include#include#include#include#include#includeint main() int filefd,n; / char file100,buf1024; / int server_sockfd,client_sockfd; int server_len,client_len; struct sockaddr_un server_address; struct sockaddr_
15、un client_address; unlink(server_socket); server_sockfd =socket(AF_UNIX,SOCK_STREAM,0); server_address.sun_family =AF_UNIX; 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); w
16、hile(1) printf(server waitingn); client_len =sizeof(client_address); client_sockfd=accept(server_sockfd,(struct sockaddr *)&client_address,&client_len); if(client_sockfd!=-1) printf(you have a client ,please put the filename to transport!n); scanf(%s,file); if(filefd=open(file,O_RDWR)0) write(client
17、_sockfd,buf,n); printf(you have transport %d bytes and it is end!n,n); close(client_sockfd); close(filefd); 本地socket套接字客户端client1.c源代码#include#include#include#include#include#include#include#includeint main() int filefd,n,oldfilefd; / char file100,buf1024; int sockfd; int len; struct sockaddr_un add
18、ress; int result; sockfd =socket(AF_UNIX, SOCK_STREAM,0); address.sun_family =AF_UNIX; strcpy(address.sun_path,server_socket); 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);
19、filefd=dup(oldfilefd); read(sockfd,file,sizeof(file); printf(the filename you receive is:%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 files context cover the test.txt,so please check into test.txt!n,n); close(sockfd); cl
20、ose(filefd); exit(0); INTENET套接字运行过程图表 39使用./server2运行服务器,显示服务器等待状态 图表 40当在另外一个终端运行客户端程序时,服务器显示客户连接,并要求输入传输文件名称 图表 41当服务器输入文件名称server2.c后客户端显示接收信息,不过接收到的文件重定向到test.txt中图表 42 server2.c的内容图表 43客户端接收到显示在test.txt的内容,和server2.c的内容比较,完全一致INTENET套接字服务器server2.c源代码#include#include#include#include#include#in
21、clude#include#include#includeint main()int filefd,n;/ char file100,buf4096;/int server_sockfd,client_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_
22、addr.s_addr=inet_addr(127.0.0.1);server_address.sin_port =9734;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
23、 sockaddr *)&client_address,&client_len);if(client_sockfd!=-1) printf(you have a client ,please 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(yo
24、u have transport %d bytes and it is end!n,n); close(client_sockfd);close(filefd); INTENET套接字客户端client2.c源代码#include#include#include#include#include#include#include#include#includeint main()int filefd,n,oldfilefd;/char file100,buf4096;int sockfd;int len;struct sockaddr_in address;int result;sockfd =s
25、ocket(AF_INET,SOCK_STREAM,0);address.sin_family =AF_INET;address.sin_addr.s_addr =inet_addr(127.0.0.1);address.sin_port =9734;len =sizeof(address);result=connect(sockfd,(struct sockaddr *)&address,len); if(result = -1) perror(oops:client2); exit(1); if(result!=-1) oldfilefd=open(test.txt,O_RDWR); fi
26、lefd=dup(oldfilefd); read(sockfd,file,sizeof(file); printf(the filename you receive is:%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 files context cover the test.txt,so please check into test.txt!n,n); close(sockfd);close(filefd); exit(0);感谢与收获通过这几次上机实习,使我更加扎实的掌握了有关Linux C编程方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026浙江嘉兴大学人才招聘117人备考题库带答案详解(精练)
- 2026陕西西安市高新第一学校招聘备考题库及参考答案详解【研优卷】
- 2026最高人民检察院直属事业单位招聘13人备考题库【必刷】附答案详解
- 2026中国国际工程咨询(北京)有限公司社会招聘5人备考题库含答案详解【培优a卷】
- 2026四川大学华西医院许艺苧研究员课题组博士后招聘备考题库附参考答案详解(基础题)
- 2026云南云铝物流投资有限公司招聘3人备考题库及1套完整答案详解
- 2026重庆财经学院财务处工作人员招聘1人备考题库含答案详解【综合题】
- 2026浙江农林大学继续教育学院劳务派遣工作人员招聘1人备考题库【综合题】附答案详解
- 2026江西吉安安福县事业单位编外工作人员公招聘5人备考题库附答案详解【满分必刷】
- 2026上半年四川成都市卫生健康委员会所属部分事业单位招聘166人备考题库含完整答案详解(夺冠)
- 2026年北邮全校教职工人工智能素养培训分类分层发展体系
- 失败市场营销案例分析
- 医院保安工作考核制度
- 男科疾病超声治疗应用指南
- 肿瘤终末期患者生活质量评估与提升方案
- 砌体墙体裂缝处理方案
- 扶贫致富电商培训课件
- 化州介绍教学课件
- 2026年全国中学生天文知识竞赛(中学组)经典试题及答案
- 药店课件教学课件
- 2025年高效能项目管理系统开发项目可行性研究报告
评论
0/150
提交评论