




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
UNIX实验题实验一(1)常用命令引用参照教材例子运行命令:date,cal,who,echo,clear,cp,mv,rm,cat,mkdir,rmdir,ls注意理解输入输出重定向,和管道(|)操作的功能在/etc/passwd文件中查找适合你的注册名得行实验一(2)文件名通配符的验证APwd显示当前目录mkdir bak在当前目录下创建bak子目录,并转到该子目录下用vi生成try.c,zap.c,arc.c,xxx.h四文件执行 cat *.c 写出实际执行的命令:cat arc.c try.c zap.c (按字典序)对命令cat来说,指定了3个文件B在当前目录下创建三个文件: a1.c 1aaaaaaaaaaa 2bbbbbbbbbb a2.c 1xxxxxxxxxx 2xxxa1.cxxxx try.c 1yyyyyyyyyy 2yyyyya*.cyy 3hdsba1.cjjdfds 4jdfj43a2.c654 然后分别执行grep a*.c try.c与grep a*.c try.c命令查看两命令的执行结果,并说明起区别前者实际执行grep a1.c a2.c try.c,在a2.c和try.c中查找正则表达式a1.c后者在try.c文件中查找正则表达式a*.c实验二(1)文件的写权限(注:应先创建有账户jiang且登录)$ who am ijiang pts/2 Jun 06 08:34$ who mydata$ ls -l mydata-rw-r-r- 1 jiang usr 58 Jun 06 09:04 mydata$ chmod u-w mydata (注:去除文件主的写权限;u用户主,-去除,w写)$ who mydata (注:将who的输出内容附加到mydata文件中,注意该命令的执行结果,想想为什么?)mydata: The file access permissions do not allow the specified action.$ rm mydata (只读文件可以被删除,为什么?)rm: Remove mydata? y$ ls -l mydatals: 0653-341 The file mydata does not exist.实验二(2) 文件的读权限$ who mydata$ chmod u-rw mydata$ cat mydata (无法读取不允许读的文件中内容)cat: 0652-050 Cannot open mydata.$ chmod 644 mydata实验二(3) 目录写权限$ chmod u-w . (当前目录不许写)$ who mydata2 (不能创建新文件,为什么?)mydata2: The file access permissions do not allow the specified action.$ who mydata (但是可以修改已有的文件,追加一部分数据,为什么?)$ rm mydata (不能删除文件)rm: 0653-609 Cannot remove mydata.The file access permissions do not allow the specified action.$ cp /etc/passwd mydata (可以覆盖旧文件)$ cp /etc/passwd mydata2 (不能创建新文件)cp: mydata2: The file access permissions do not allow the specified action.$ mv mydata MyData (文件不许改名)mv: 0653-401 Cannot rename mydata to MyData: The file access permissions do not allow the specified action.$ mkdir Test (不可创建子目录)mkdir: 0653-357 Cannot access directory .: The file access permissions do not allow the specified action.实验二(4)目录读权限$ pwd/usr/jiang$ chmod u-r .$ ls (不可读的目录无法列表出其中文件)ls: .: The file access permissions do not allow the specified action.$ chmod 000 . (取消当前目录所有权限)$ ls ls: 0653-345 .: Permission denied.$ chmod 755 . (试图恢复当前目录权限失败,因为试图访问当前目录下的.文件)chmod: .: The file access permissions do not allow the specified action.$ chmod 755 /usr/jiang (这种访问不需要当前目录权限,可恢复当前目录权限)n 子目录没有读写权限,但是保留了x权限$ chmod u=x ttt$ cat ttt/ccp.c main(int argc, char *argv) .$ rm ttt/arg.c (子目录没有写权限,不能删除其中的文件)rm: 0653-609 Cannot remove ttt/arg.c.The file access permissions do not allow the specified action.$ ls ttt (子目录没有读权限,不能列出其中的文件)ls: ttt: The file access permissions do not allow the specified action.n 子目录有读写权限,但没有x权限$ chmod u=rw ttt$ ls tttBUGS.report arg.c ccp.c chap.h mydataarg auth.c chap.c disk.img$ cat ttt/arg.c cat: 0652-050 Cannot open ttt/arg.c.(试图设置其他用户的文件或目录的权限)$ chmod 777 /chmod: /: Operation not permitted.实验二(5) 文件归档与压缩的应用先在当前目录下创建abc子目录,再在abc子目录下创建abc1子目录,并分别复制一些文件到abc和abcabc1目录下 ,然后做入如下操作。a、查看压缩前后文件的大小;b、改变当前目录位置,然后恢复归档文件。观察原始目录文件和恢复后的目录文件情况。? tar cvf abc.tar abc /将目录abc存到文件abc.tar ? gzip abc.tar/压缩生成文件abc.tar.gz ? gunzip abc.tar.gz /解压缩? tar xvf abc.tar /恢复归档文件实验三注:如果采用直接复制shell程序然后转到linux下执行注意文本行只能保留换行符(0a),而不是回车换行(0d0a)实验 (1)简单shell程序。说明echo -e 015 $count c中015和c的作用 if $# = 0 then echo Usage: $0 : else count=$1while $count -gt 0 do count=expr $count - 1 echo -e 015 $count c sleep 1 done fi实验二(2)简单shell程序。请将 ! -d $cmd -a -x $cmd & $cmd 换为echo $cmd运行;若不换该语句可试运行下一段开机时自动执行的批处理程序 if -d /etc/rc.d then for cmd in /etc/rc.d/*/* /etc/rc.d/* do ! -d $cmd -a -x $cmd & $cmd done fi 实验三:a.虚拟机下linux访问物理硬盘 b.简单shell的实现1.通过设置虚拟机使其能识别物理硬盘2.用命令fdisk在linux下安装硬盘3.实现将windows目录下的文件拷如linux分区.4.编程实现简单shell功能.实验四:消息队列实验1. 编译s.c;c.c程序2. 在后台运行s,另开两个窗口分别运行c并输入信息观察输出信息.3. 使用命令ipcs -q 显示消息队列有关的信息,注意key值与程序中的SC_KEY的关系. ipcrm -q 0x1111 删除程序建立的消息队列.4. 使用ps -a 显示进程信息,并用kill命令删除后台运行的s程序的进程. 5. 在用户主目录下的.bashrc文件中加入命令行PATH=$PATH:.然后重新注册后,再执行程序. /* File name : sc.h */#include #include #include #include #define SC_KEY 0x1111 /定义消息队列KEY#define M_IN 1 /用作服务进程接收消息类型的标识struct Msg long mtype; /消息类型(4B的整数),后续为消息正文 long src_pid; char string1000; #define MAX_MSG_LEN (sizeof(struct Msg) sizeof(long) / 定义MAX_MSG_LEN消息正文长度/s.c#include sc.hmain() struct Msg rmsg, smsg; int qid, rlen, slen, i; qid = msgget(SC_KEY, IPC_CREAT | 0666);/创建消息队列 for (;) rlen=msgrcv(qid, &rmsg, MAX_MSG_LEN, M_IN, 0); slen = rlen; smsg.mtype = rmsg.src_pid; smsg.src_pid = 0; /* useless */ for (i = 0; i slen - sizeof(long); i+) smsg.stringi = toupper(rmsg.stringi); msgsnd(qid, &smsg, slen, 0); /c.c#include sc.hmain() int qid = -1, pid, ret, slen, rlen; struct Msg smsg, rmsg; qid = msgget(SC_KEY, 0); pid = getpid(); for (;) printf(Input a string or D for exit: ); if (fgets(smsg.string,1000,stdin) = NULL) exit(0); smsg.mtype = M_IN; smsg.src_pid = pid; slen = sizeof(long) + strlen(smsg.string) + 1; ret = msgsnd(qid, &smsg, slen, 0); rlen = msgrcv(qid, &rmsg, MAX_MSG_LEN, pid, 0); printf(Result : %sn, rmsg.string); 实验五: (1)信号被忽略单独运行xyz时,使用kill -15命令可杀死该进程 由abc进程来启动的xyz进程就不能用kill -15命令杀死。注意:在第二种运行方式中,XYZ程序存放的位置与PATH环境变量值的关系。 搞清signal(SIGTERM, SIG_IGN)与kill -15的关系/* File name : abc.c */ #include main() signal(SIGTERM, SIG_IGN); if (fork() for(;) sleep(100); else execlp(”xyz”, ”xyz”, 0); /* File name : xyz.c */ main() int i = 0; for (;) printf(”%dn”, i+); sleep(1); (2) 信号的捕捉信号被捕捉并由一个用户函数来处理 n 信号到达时,这个函数将被调用来处理那个信号 #include sig_handle(int sig) printf(”HELLO! Signal %d catched.n”,sig); main() signal(SIGINT, sig_handle); signal(SIGQUIT, sig_handle); for(;) sleep(500); n注意:在信号的用户函数被调用之前,自动被重置到它的缺省行为。 搞清signal(SIGINT, sig_handle),signal(SIGQUIT, sig_handle)的作用,并说明在程序中与sig_handle(int sig)的关系。 实验六:简单的client.c/server0.c程序通信1. 编辑、编译、连接两程序。2. 在一terminal窗口运行server0, 然后在另一terminal窗口运行client 127.0.0.1,观察server0窗口的变化。3. 在运行client窗口内输入若干文本行,观察server0窗口的变化。/server0.c#include #include #include #define SIZE 8192#define PORT_NO 12345int main(void) int admin_sock, data_sock, nbyte, i; struct sockaddr_in name; char buf8192; admin_sock = socket(AF_INET, SOCK_STREAM, 0);/创建一个套接字(用于网络通信的文件描述符) name.sin_family = AF_INET; /short类型的两字节协议栈. AF_INET(TCP/IP协议) name.sin_addr.s_addr = INADDR_ANY; /IP地址. INADDR_ANY宏,其值为0,使用本地任一IP地址 name.sin_port = htons(PORT_NO); /端口号=12345, htons主机字节顺序转为网络字节顺序. bind(admin_sock, &name, sizeof(name);/将套接字与本地端点名绑定起来. listen(admin_sock, 5); /对该套接字进行侦听,最大的排队长度是5.(非阻塞形式) data_sock = accept(admin_sock, 0, 0);/ 侦听到远端有请求,接受请求,内核返回一新的连接,用于数据传输. printf(Accept connectionn); for (;) nbyte = read(data_sock, buf, sizeof(buf); if (nbyte = 0) printf(* Disconnected.n); close(data_sock); exit(0); for (i = 0; i nbyte; i+) printf(%c, bufi); /client.c#define SIZE 8192 #define PORT_NO 12345 int main(int argc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 乙种本装修安全协议书6篇
- 2025年新能源行业人才流动分析报告:技术创新与产业链优化
- 2025-2030年新能源汽车电池回收市场投资热点分析报告
- 2025年工业固废资源化利用产业链研究报告
- 环保产业园2025年循环经济废弃物处理技术进步研究报告
- 2025年工业污染场地修复技术成本效益与环保产业政策创新研究报告
- 2025年嘉兴市秀洲区新城街道社区卫生服务中心招聘编外合同制5人考前自测高频考点模拟试题及一套完整答案详解
- 中国协议书油价
- 二手车位转让协议书
- 2025济南水务集团招聘笔试考前自测高频考点模拟试题及一套完整答案详解
- (安徽卷)2025年高考历史试题
- PI-DataLink软件基础操作培训教程
- 关爱弱势群体课件
- 校企挂职锻炼协议书范本
- 驾照换证考试题库及答案
- 医药物流仓库管理流程标准
- 2025至2030鸡汁行业风险投资态势及投融资策略指引报告
- (高清版)DB31∕T 1578-2025 微型消防站建设与运行要求
- 儿童百日咳的诊治
- 40篇英语短文搞定高考3500个单词(全部含翻译,重点解析)
- 江苏艺考笔试题及答案
评论
0/150
提交评论