版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 Linux操作系统实 验 报 告姓名 学号 - 25 -实验一 熟悉Linux常用命令一. 实验目的:1 掌握Linux下各类命令的使用方法;2 熟悉Linux操作环境。二. 实验内容:练习使用Linux常用命令。三. 实验环境:一台已经安装好Linux操作系统的主机/或安装过vmware的windows系统。四、 实验操作: 虚拟机的安装见附件1 Linux下常用命令见附件2 1)
2、60; 获得命令帮助分别演示一下help -help man info 命令的用法; 2) 目录操作命令(1)启动计算机,利用root用户登录到系统,查看提示符,区别#和$提示符。(2)用pwd命令查看当前所在的目录。(3)用ls命令列出此目录下的文件和目录,包括ls -a ;ls -l;ls -R等选项的使用。(4)使用cd 装换目录命令,练习绝对路径和相对路径的使用.(5) 进入/home目录下,创建目录test,进入test目录,在该目录下创建一个文件hello.C,创建一个目录toto,进入toto目录,创建子目录
3、tata,创建文件 test.c.(6)删除创建的hello.c,删除目录toto.(7) 在/root下创建文件hello.c,拷贝该文件到/home/test下(如果test目录不存在自己创建),并命名文件为tt.c。(8) 使用cat more less tail head显示文件的内容。 只看/etc/passwd的前5行内容。只看/etc/passwd的后5行内容。(9)管道的使用,cat hello.c | grep "hello",在hello.C文件中查找具有字符串"hello"的行.(10)重定向的使用。符号 &g
4、t; >> 发现其不同的用法。(11)压缩命令的使用。创建三个文件 1.Jpg 2.Jpg 3.Jpg, 把三个文件打包tar cvf hello.tar 1.Jpg 2.Jpg 3.jpg 压缩gzip hello.tar 将hello.tar拷贝到其他目录下解压缩: gzip -d hello.tar.gz 解包hello.tar tar -xvf hello.tar(12) 练习拷贝命令,重命名命令,查找命令的使用(13) 熟悉根文件系统下的目录1) 文件操作命令(1) 查找 /etc下的passwd这个文件。命令:1.#Find /etc name passwd /#表示在
5、管理员权限下,以下同2. #locate passwd(2) 查找/home目录下的所有文件名中有profile的文件,其命令为。命令:#Find /etc -name “*profile*”(3) 在/home下面创建test目录,在test目录下创建目录a,在a目录下创建目录b,在b目录中创建目录c.在目录c中创建d,用一个命令完成。命令:mkdir -p /home/test/a/b/c/d(4) 创建一个软连接指向/usr/src的源代码,修改源文件,查看连接文件是否改变2) 用户管理与组管理(1) 建立帐号us
6、er01,查看/etc/passwd文件有没变化,并设置user01的密码为123456。在查看/etc/shadow文件有无变化。l 查看/etc/group文件。l 新建一个组,组名为group01,在新建一个用户user02,并指定它的组为group01l 把user02的组更改为user01,l
7、0; 删除user01这个用户l 删除group01这个组 5) 文件的权限属性l 查看/etc/passwd的权限,在查看/etc/shadow的权限。l 在/home下面新建 afile文件,查看它的权
8、限l 新建user02这个帐户,l 新建group02这个组,l 把afile的权限设置为对用户来说可读可写,对组来说可读,对其他用户来说没有任何权限l 把afile文件的所有者更该为user02,所属组更改为gro
9、up02,五、 思考题:1、 如何查看隐含文件列表?答:#ls all2、 如何将一个目录中的所有文件拷贝到另一个目录中,包括这个目录中的隐含文件。答:# cp r 3、 如何删除一个目录包括其中的所有文件,并且不显示任何提示信息?答:#rm r f4、 什么是绝对路径?什么是相对路径?如何表示?答:绝对路径,从根目录为起点到文件(夹)所在的目录;相对路径,从一个目录为起点到文件(夹)所在的目录。实验二 Linux下程序设计基础一. 实验目的:1 掌握Linux下常用
10、编辑器的使用;2 掌握linux下程序的编译/调试方法。二. 实验内容:练习linux下的 c语言程序设计,熟练使用vim编辑器编辑文件。学会gcc编译器的使用及常用的编译选项。能够使用gdb调试器进行调试程序。三. 实验环境:一台已经安装好Linux操作系统的主机/或安装过vmware的windows系统。四、实验操作:1. Vi 编辑器的使用1)vi 编辑器的启动在控制台下输入$ vi或$ vi 文件名即可启动vi 编辑器。如果文件是一个新文件,就会在屏幕底部现实一个信息,说明用户正在创建新文
11、件。2)Vi编辑进入插入模式3)Vi的保存与退出(末行模式下常用命令)4)命令模式下常用的命令命令含义x删除光标所指向的当前字符 nx 删除光标所指向的前 n 个字符dd 删除光标所在行,并去除空隙 ndd删除 n 行内容,并去除空隙 小写字母 p将缓冲区的内容粘贴到光标的后面 大写字母 P将缓冲区的内容粘贴到光标的前面 yy 复制当前行到内存缓冲区nyy复制 n 行内容到内存缓冲区 u 撤消前一条命令的结果 练习要求:用vi编辑器编写一段文字,然后用上述命令进行操作,最后保存退出。2.Gcc编译器的使用 1)用vi编辑器编写一个简单hello world程序,命名为hello.c,保存退出。
12、 2)Gcc 编译该hello.c文件,要求生成hello可执行文件,并加入调试信息。 3)运行hello文件,查看实验结果。Gcc下常用的命令选项:-c 选项:告诉gcc仅把源程序编译为目标代码而并不做链接工作生成.o文件-o选项:默认情况下,在gcc没有指定编译选项的情况下会在当前目录生成一个名为a.out的可执行程序。g选项:在可执行文件中输出调试信息,通常是为调试器gdb所用Idir选项:指定库以及头文件搜索路径Ldir选项:指定在目录中需要搜索的库(动态库.so和静态库.a)3.Gdb调试器的使用进入gdb 调试环境Gdb hello 然后用如下命令进行操作:调试基本步骤:²
13、; Gdb <可执行文件名> 进入程序调试环境² Break设置断点² Run运行程序² Next 单步运行五、思考题:1 断点是否可以设置多个,自己试试看。如何清除所设的断点?答:可以设置多个,但是执行时只会执行到第一个断点2 如果要调试程序,编译时有何要求?答:需要在编译时添加调试参数,如gcc g o name *.c自己写一个完整的程序,该程序主要完成数组排序,按照由小到大顺序排列给定数组的数据。并进行编译、调试,查看运行结果,写出整个步骤。#include "stdio.h"int main(void) int a5,te
14、mp;printf("input 5 numn");for(int i=0;i<5;i+)scanf("%d",&ai);for(i=0;i<5;i+)for(int j=i;j<5;j+)if(ai>aj)temp=ai;ai=aj;aj=temp;for(i=0;i<5;i+)printf("%dn ",ai); return 0;实验三 Linux下进程间管道通信一. 实验目的:1 掌握Linux下有名管道和无名管道通信的原理;2
15、 掌握Linux下进程创建、撤销的方法。二. 实验内容:1 创建一个进程,父进程调用外部程序实现两个数求和,并打印输出结果(从外部输入待求和的两个数),子进程待父进程结果输出后,删除外部程序。2 使子进程处于僵死状态,并通过ps查看进程状态3 在1的基础上修改:父进程得到求和结果后传给子进程,由子进程打印输出。(通过无名管道)4 通过有名管道实现两个外部进程之间的通信。一个进程从外部获取输入,另外一个进程打印出前一个进程的输入内容。三. 实验环境:一台已经安装好Linux操作系统的主机/或安装过vmware的wi
16、ndows系统。四、实验原理1无名管道无名管道只能实现父子进程或具有亲缘关系的进程间的通信,系统调用为: int pipe(int pipe2),参数是2个元素的int型数组,pipe0是读取管道的文件标识符,pipe1是写入管道的文件标识符。所使用的头文件 #include <unistd.h>。Ø 使用时先建立管道再建立子进程的顺序不能变。若不然,先建立子进程,再建立管道,管道只对建立它的进程可见,对另一个进程是看不见的,因此无法实现父子间的通信。2有名管道有名管道可以实现任意两个进程间的通信,不局限于具有亲缘关系的进程。系统调用为:int mkfifo(const
17、char *path,mode_t mode), path:要使用的命名管道的路径和名字mode指明管道的访问权限(O_RDONLY,O_WRONLY,O_RDWR)所使用的头文件:#include <sys/stat.h> #include <sys/types.h>五、实验参考代码 1.无名管道通信 #include<stdio.h>#include<unistd.h>#include<signal.h>#include<errno.h>#include<sys/types.h>int main(int a
18、rgc,char* argv)int f_des2;char msgBUFSIZ;pid_t pid;if(pid=fork()<0)printf("creat childprogress failed!");return 1;else if(pid=0)execl("/plus","plus",0);exit(0);return 0;/此时加法程序plus位于程序同一目录else if(pid>0)wait(0);system("rm /plus"); /系统命令调用return 0;/判断参数是否符
19、合程序要求if(argc!=2)printf("Usage :%s messagen",argv0;);return 1;/创建父子间的通信管道if(pipe(f_des)=-1)perror("cannot creat the IPC pipe");return 1;/创建子进程有名管道的创建#define FIFO "/tmp/myfifo"mkfifo(FIFO,O_CREAT|O_EXCL)七、实验过程实验1代码参见上面实验2运行kill命令终止父进程则子进程处于僵死状态八、思考题1为什么无名管道只能在具有亲缘关系的进程间通信
20、。答:因为无名管道的应用是通过fork()的方式来创建一个子进程,然后子进程和父进程之间的管道就可以读写,所以说有亲缘关系的进程(父子进程)之间,2管道与文件有什么样的区别。答:无名管道只是内存虚拟的一个文件,在存储器上并不存在,随着程序的执行二产生,随着程序的结束而消亡,文件是存储器上确实存在的,不以程序的运行与否而存在消亡的;有名管道和无名管道不通,它是一个文件,在存储器上真实存在实验四 IPC进程间共享内存通信一. 实验目的:1 掌握Linux下进程间使用共享内存进行通信的基本原理;2 掌握共享内存的使用方法。二.
21、160; 实验内容:1创建一块共享内存,然后使用该共享内存实现两个进程之间的通信。三. 实验环境:一台已经安装好Linux操作系统的主机/或安装过vmware的windows系统。四实验原理1Linux采用内存映射技术把共享内存区域映射到有关进程的虚拟内存空间,使他成为进程虚拟内存的一部分,从而进程可以对这部分虚拟内存区域进行读写。对共享内存的基本操作包括:Ø 进程与共享内存的结合;共享内存映射到进程虚拟区域的过程Ø 进程与虚拟内存的分离;当使用共享内存完成数据交换后需要释放相关的虚拟内存区域,即脱离与共享内存的的联系。
22、16; 主要系统调用(1) int shmget(key_t key,int size,int shmflg)/创建共享内存(2) shmctl(int shmid,int cmd,struct shmid_ds *buf)/共享内存的控制(3) int shmat(int shmid,char*shmaddr,int shmflg) /共享内存映射到进程虚拟区域(4) int shmdt(char*shmaddr)/进程与虚拟内存的分离Ø 参考程序段:shmid = shmget(KEY,SIZE,IPC_CREAT|0600); /* 建立共享内存*/if(shmid = -1)
23、printf("create share memory failed: %s",strerror(errno);return 0;if(fork() = 0) /* 子进程*/* 系统自动选择一个地址连接*/shmaddr = (char *)shmat(shmid,NULL,0);if(shmaddr = (void *)-1)printf("connect to the share memory failed: %s",strerror(errno);return 0;strcpy(shmaddr,"hello, this is child
24、 process!n");shmdt(shmaddr); /* detach共享内存*/return 0;else /* 父进程*/sleep(3); /* 等待子进程执行完毕*/shmctl(shmid,IPC_STAT,&buf); /* 取得共享内存的相关信息*/printf(" size of the share memory: ");printf("shm_segsz = %d bytes n",buf.shm_segsz);printf(" process id of the creator: ");pr
25、intf("shm_cpid = %d n",buf.shm_cpid);printf(" process id of the last operator: ");printf("shm_lpid = %d n",buf.shm_lpid);/* 系统自动选择一个地址连接*/shmaddr = (char *)shmat(shmid,NULL,0);if(shmaddr = (void *)-1)printf("connect the share memory failed: %s",strerror(errno)
26、;return 0;printf("print the content of the share memory: ");printf("%s n",shmaddr);shmdt(shmaddr); /* detach共享内存*/ 五、实验代码#include"stdio.h"#include"signal.h"#include"unistd.h"int pid1,pid2;main()int fd2; char outpipe100,inpipe100;pipe(fd);while(pid1=f
27、ork()=-1);if(pid1 =0)lockf(fd1,1,0);sprintf(outpipe,"nChild progress is sending message!n");write(fd1,outpipe,50);sleep(5);lockf(fd1,0,0);exit(0);elsewhile(pid2=fork()=-1);if(pid2=0)lockf(fd1,1,0);sprintf(outpipe,"nChild progress2 is sending messsage!n");write(fd1,outpipe,50);sle
28、ep(5);lockf(fd1,0,0);exit(0);elsewait(0);read(fd0,inpipe,50);printf("%sn",inpipe);wait(0);read(fd0,inpipe,50);printf("%sn",inpipe);exit(0);六实验结果 六思考题1共享内存通信相比其它通信方式有没有优势? 答:采用共享内存通信的一个显而易见的好处是效率高,因为进程可以直接读写内存,而不需要任何数据的拷贝。对于像管道和消息队列等通信方式,则需要在内核和用户空间进行四次的数据拷贝,而共享内存则只拷贝两次数据1:一次从输入文件
29、到共享内存区,另一次从共享内存区到输出文件实验五 IPC信号量使用一、实验目的: 1学习在LINUX 下信号量的使用方法。 2学习使用信号量实现进程间互斥操作的原理。二. 实验内容:在PC机上编写程序,实现2个进程间的互斥操作。三. 实验环境:一台已经安装好Linux操作系统的主机/或安装过vmware的windows系统。四、实验原理信号量机制用于进程同步与互斥。某种资源的信号量代表该资源的数量,可以限制一种资源同时被多少个地方访问。一个进程如果申请信号量失败,说明那个资源在其他地方被使用,需要等待,于是这个进程会被挂起,等
30、资源释放了再继续。(1)在Linux下使用信号量的步骤:1) 创建信号量集合2) 初始化信号量的个数,即设置每种信号量有多少个。3) 申请获得某个信号量4) 释放以获得的某个信号量(2)系统调用1) 创建信号量集合:int semget(key_t key, int nsems, int flag)a) key是用来生成信号量标识的整数,使用IPC_PRIVATE可以由系统自动选择。b) nsems是信号量集合中有多少种信号量。创建两种信号量并不需要调用这个函数两次,只要设置nsems就可以一次创建多种信号量。c) flag是信号量访问权限,用S_IRWXU设为可读写2) 初始化信号量个数:i
31、nt semctl(int semid, int semnum, int cmd, union semun arg)a) semid是信号量集合标识,由semget()产生b) semnum用来指定要访问信号量集合中的哪个信号量,第一个信号量编号为0,其余递增。c) cmd是执行的操作,有很多种,这里用SETVAL,设置信号量个数。d) arg是输入信息,新的信号量个数写在里面。arg是一个需要自己定义的联合体,结构如下:union semun int val; /要把信号量设置为多少 struct semid_ds *buf; /一个系统定义的结构体,本例中不用理会 ushort *arra
32、y; /用于一次设置多个信号量,本例不用理会3)申请获得某个信号量:int semop(int semid, struct sembuf semoparray, size_t nops)a) semid是信号量集合标识,由semget()产生b) semoparray是一个结构体数组,由这个数组指定要操作那个信号量,是申请还是释放,申请多少或释放多少,如果申请不到的话是略过还是等待。sembuf结构体定义如下:struct sembuf ushort sem_num; /选择要操作集合中的哪个信号量,编号从0开始 short sem_op; /+n表示归还n个信号量,-n表示申请n个信号量 s
33、hort sem_flg; /失败处理,IPC_NOWAIT表示略过,SEM_UNDO表示等待c) nops指定取semoparray中前多少个数据来进行操作。4)释放某个信号量:int semop(int semid, struct sembuf semoparray, size_t nops)。和申请相同,不过在结构体的sem_op中指定正数。(3)主要头文件<sys/stat.h><sys/sem.h><sys/ipc.h><sys/types.h>(4)参考代码union semun int val; struct semid_ds *b
34、uf; unsigned short *array; arg;int sem_creat(key_t key) union semun sem; int semid; sem.val = 0; semid = semget(key,1,IPC_CREAT|0666); if (-1 = semid) printf("create semaphore errorn"); exit(-1); semctl(semid,0,SETVAL,sem); return semid;void del_sem(int semid) union semun sem; sem.val = 0;
35、 semctl(semid,0,IPC_RMID,sem);/pint p(int semid) struct sembuf sops=0,+1,IPC_NOWAIT; return (semop(semid,&sops,1);/vint v(int semid) struct sembuf sops=0,-1,IPC_NOWAIT; return (semop(semid,&sops,1);int main() pid_t pid;int semid; key_t key;/*get the key*/ key = ftok("./etc/ld.so.conf&qu
36、ot;, 'u');/*create a semaphore*/ if(semid = semget(key, 1, IPC_CREAT | 0666) = -1) printf("Create a sempahore fail!n"); exit(EXIT_FAILURE); /*initial the semaphore*/ if(semaphore_init(semid, 0) = -1) printf("Initial the semaphore fail!n"); exit(EXIT_FAILURE); /*fork. crea
37、te a child process*/ if(pid = fork() = -1) printf("Fork fail!n"); exit(EXIT_FAILURE); /*parent process, post the semaphore*/ if(pid > 0) sleep(3);printf("The value of semaphore in the parent process : %dn", semctl(semid, 0, GETVAL); /post the semaphore V printf("I post th
38、e semaphore !n"); if(semaphore_v(semid) = -1) printf("post the semaphore fail!n"); exit(EXIT_FAILURE); printf("post done !n"); exit(0); else /wait the semaphore P if(semaphore_p(semid) = -1) printf("Wait the semphore fail!/n"); exit(EXIT_FAILURE); printf("I ge
39、t the semaphore!n");semctl(semid, 0, IPC_RMID); /destroy the semaphore exit(0);五、实验要求自己写一个程序,练习信号量的使用。六实验代码如参考中的main()函数七实验结果六、思考题1、信号量实现进程间互斥的原理是什么?答:设互斥信号量mutex初值为1,进程执行操作前P(mutex),操作完成后V(mutex)。P操作使mutex减1,如果mutex<1,新进程在执行P操作后会阻塞,等到前一个进程V操作使mutex+1后mutex=1才执行。实验六 设备驱动程序一、 实验目的: 1学习在
40、LINUX 下进行驱动设计的原理。 2掌握使用模块方式进行驱动开发调试的过程。二、 实验内容:在PC 机上编写简单的虚拟硬件驱动程序并进行调试,实验驱动的各个接口函数的实现,分析并理解驱动与应用程序的交互过程。三、 实验环境:一台已经安装好Linux操作系统的主机/或安装过vmware的windows系统。四、实验原理 1.驱动程序与应用程序的区别 应用程序一般有一个main 函数,从头到尾执行一个任务;驱动程序却不同,它没有main 函数,通过使用宏init_module(); 将初始化函数加入内核全局初始化函数列表中,在内核初始化时执行驱动的初始化函数,
41、从而完成驱动的初始化和注册,之后驱动便停止等待被应用软件调用。驱动程序中有一个宏cleanup_module()注册退出处理函数。它在驱动退出时被调用。 2.主设备号和次设备号 传统方式中的设备管理中,除了设备类型外,内核还需要一对称作主次设备号的参数,才能唯一标识一个设备。主设备号相同的设备使用相同的驱动程序,次设备号用于区分具体设备的实例。比如PC 机中的IDE 设备,一般主设备号使用3,WINDOWS 下进行的分区,一般将主分区的次设备号为1,扩展分区的次设备号为2、3、4,逻辑分区使用5、6.。设备操作宏MAJOR()和MINOR()可分别用于获取主次设备号,宏MKDEV()用于将主设
42、备号和次设备号合并为设备号,这些宏定义在include/linux/kdev_t.h 中。对于查看/dev 目录下的设备的主次设备号可以使用如下命令:/mnt/yaffsls /dev l 3.设备驱动程序接口通常所说的设备驱动程序接口是指结构file_operations,它定义在include/linux/fs.h 中。 4.模块的加载与卸载 加载模块:insmod test.O 卸载模块:rmmod test 显示已安装的模块:lsmod五、驱动模块设计参考#define MODULE #include <linux/module.h > int
43、 init_module(void) printk("Hello World!n"); return 0; void cleanup_module(void) printk("Go
44、odbye!n"); 编译:root# gcc c hello.c执行:root# insmod hello.o使用lsmod命令查看加载的hello模块:root# lsmodModule size Used byHello 464 0卸载模块root# rmmod hello查看结果:dmesg (可以看到打印信息)六、实验要求自己写一个简单的驱动程序,驱动程序中定义struct file_operations结构,在其中定义自己的接口,利用该驱动程序实现设备文件的写入与输出。写一个应用程序测试自己的驱动程序。七实验代码1.驱动程序#include <linux/init.
45、h> #include <linux/module.h> #include <linux/types.h> #include <linux/fs.h> #include <linux/mm.h> #include <linux/errno.h> #include <asm/segment.h> #include<linux/poll.h> #include <linux/compiler.h> char kernel_buf30="Hello,the first driver dem
46、o" unsigned int test_major=0; static ssize_t read_test(struct file *file,char *buf,size_t count,loff_t *f_pos) copy_to_user(buf,kernel_buf,count); return count; static ssize_t write_test(struct file *file,char *buf,size_t count,loff_t *f_pos) copy_from_user(kernel_buf,buf,count); return count;
47、static int open_test(struct inode *inode,struct file *file) try_module_get(THIS_MODULE); return 0; static int release_test(struct inode *inode,struct file *file) module_put(THIS_MODULE); return 0; struct file_operations test_fops= owner:THIS_MODULE, read:read_test, write:write_test, open:open_test,
48、release:release_test, /ioctl:ioctl_test ; int driver_init(void) int result; result=register_chrdev(250,"test",&test_fops); if(result<0) printk(KERN_INFO "test:can not get major number!n"); return result; return 0; void driver_exit(void) unregister_chrdev(250,"test&quo
49、t;); module_init(driver_init);module_exit(driver_exit);MODULE_LICENSE("Dual BSD/GPL"); 2.测试程序#include<stdio.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>main() int i,n;int testdev; char buf20="hello worldn" testdev=open("/lib/modules/2.
50、6.38-11-generic/build/driver2",O_RDWR);if(testdev=-1)printf("can not open file!n"); exit(0); write(testdev,buf,10); read(testdev,buf,10); printf("%sn",buf); close(testdev);七、思考题1. 驱动程序框架中要有哪几个部分?答:1.驱动程序与操作系统内核的接口。通过file_operations(include/linux/fs.h)数据结构来完成的。2.驱动程序与系统引导的接口。
51、这部分利用驱动程序对设备进行初始化。3.驱动程序与设备的接口。这部分描述了驱动程序如何与设备进行交互,与具体的设备密切相关。2. 模块方式与直接编译进内核有什么优缺点?答:模块方式可以即插即用,十分方便;而编译进内核系统需重启驱动程序才可使用不很方便实验七 Linux 下socket网络通信一. 实验目的: 1学习在LINUX 下进行网络通信的原理。 2掌握基本的网络协议。 3.能够自己编写网络通信程序实现网络内主机的通信。二. 实验内容:在PC 机上编写简单的一个网络程序,实现局域网内两台主机之间的通信。客户端向服务器端发送信息,服
52、务器端接受信息并显示。三. 实验环境:一台已经安装好Linux操作系统的主机/或安装过vmware的windows系统。四实验原理1. 套接字相关数据结构struct sockaddrsa_family_t sa_family;char sa_data14; 面向TCP/IP协议使用的套接字地址结构:struct sockaddr_inshort intsin_family;/*套接字域*/unsigned short int sin_port;/*端口号,网络直接顺序*/struct in_addr sin_addr;/*Internet 地址,网络直接顺 序*/unsigned charsin_zero8;/*没用*/3. 使用TCP协议通信方式4.参考程序段:服务器端:sockfd=socket(AF_INET,SOCK_STREAM,0);my_addr.sin_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026安全生产知识竞赛题库及答案
- 2026年北京市海淀区实验小学三年级语文第一单元课后练习题及答案
- 人教版初中道德与法治八年级上册第11单元法律意识培养测试卷及答案
- 2026人工智能深度学习算法行业市场供需分析及投资评估规划分析研究报告
- 2026人工智能技术应用场景拓展与商业模式分析研究
- 2026人工智能医疗应用场景全面调查及远程诊疗市场发展潜力报告
- 2026云计算服务行业竞争格局分析及技术演进与商业模式创新研究报告
- 2026中国直播电商供应链重构与品控管理体系升级报告
- 2026中国征信服务小微企业融资效果评估报告
- 2026年人教版初中语文下册第10单元文言文翻译练习题及答案
- 爱粮始于心 节粮践于行2026年世界粮食日主题班会
- 产后产后恢复误区解读
- 联建共建工作制度
- 2026校招:中国兵器工业笔试题及答案
- 声音知识拓展的科学
- 中国围透析期慢性肾脏病管理临床实践指南(2025年版)
- 混凝土路面施工质量控制及措施
- 四川省2025年1月普通高中学业水平合格性考试政治试卷(含答案)
- 建筑装饰制图与识图 课件 项目2任务2 点、直线和平面的投影
- 医学科研成果转化指南
- 2026年湖南石油化工职业技术学院单招职业技能测试必刷测试卷及答案1套
评论
0/150
提交评论