当前位置:文档之家› linux程序设计实验报告大作业

linux程序设计实验报告大作业

实验报告课程名称: LINUX程序设计学院:计算机学院专业:软件工程班级: 14-3 姓名:张正锟学号: 10382017年 1月1日山东科技大学教务处制实验报告组别姓名张正锟同组实验者实验项目名称实验一熟悉Linux命令实验日期第11周周四9,10节教师评语实验成绩指导教师一、实验目的熟悉并掌握Linux操作系统基本命令二、常用的普通命令1.了解系统的uname,date,w命令2.了解文件的ls和file命令3.cat,less,head,tail,nl,wc等命令的使用4.文本内容查找grep 命令5.文件权限的修改chmod,chown,umask6.文件夹操作:mkdir,rmdir三、用户和组的管理管理1.探究用户配置文件/etc/passwd, /etc/shadow/etc/passwd是用户数据库,其中的域给出了用户名、加密口令和用户的其他信息. /etc/shadow是在安装了影子(shadow)口令软件的系统上的影子口令文件。

影子口令文件将/etc/passwd 文件中的加密口令移动到/etc/shadow中,而后者只对超级用户( r o o t )可读。

这使破译口令更困难,以此增加系统的安全性。

2.探究组配置文件组的配置文件/etc/group, /etc/gshadow3.id, who, whoami,groups等命令四、文件打包与压缩1.tar压缩和解压五、软件包管理1.安装软件tree2.卸载软件tree六、进程管理1.top命令动态显示进程状态2.ps命令显示瞬时进程状态3.Kill命令终止一个进程用gedit打开一个文件并在后台运行,显示的进程号为17271,然后用kill命令杀死这个进程,观察到gedit关闭七、实验总结通过本次实验,熟悉了好多Linux下面的基本命令,可以看出Linux的命令基本上都有好多参数可选,这样就可以用一条命令完成好多任务,大大提高效率。

另外还学会了当命令不会使用的时候,可以调用man来查看命令的使用方法。

实验报告组别姓名张正锟同组实验者实验项目名称实验二Shell编程实验日期第12周周四9,10节教师评语实验成绩指导教师一、实验目的掌握Shell命行的运行掌握编写和执行Shell程序的步骤掌握在Shell中使用参数和使用变量的方法掌握表达式比较,循环结构语句和条件结构语句的写法掌握在shell脚本中使用函数的方法二、简单bash脚本1.编写bash脚本2.添加执行权限3.运行结果三、计算器:变量读入和输出1.编辑程序2.添加可执行权限3.运行程序四、比较两个数字是否相等1.编写程序2.添加可执行权限五、循环计算累加和1.编写程序2.添加可执行权限3.运行程序六、利用shell函数计算两数之和1.编写程序2.添加可执行权限七、计算数组累乘1.编写程序2.添加可执行权限3.运行程序八、实验总结通过本次实验,我学会了shell中的各种写法,包括流程控制,循环,数组,函数等等,了解到shell在Linux是一种强大的神器,可以批量完成各种操作。

实验报告组别姓名张正锟同组实验者实验项目名称实验三文件操作实验日期第13周周四9,10节教师评语实验成绩指导教师一、实验目标1.熟悉cd、date、pwd、cal、who、echo、clear、passwd等常用命令。

?2.掌握在用户主目录下对文件进行的操作:复制一个文件、显示文件内容、查找指定内容、排序、文件比较、文件删除等。

?3.学会对目录进行管理:创建和删除子目录、改变和显示工作目录、列出和更改文件权限、链接文件等。

?二、文件操作:修改文件权限设计一个程序,要求把系统中“/etc”目录下的passwd文件权限,设置成文件所有者可读可写,所有其他用户为只读权限。

1.编写C语言程序2.编译执行3.查看结果三、从终端读写数据文件的打开可以用open函数,即使原来的文件不存在,也可以用open函数创建文件。

在打开或者创建文件时,可以指定文件的属性及用户的权限等参数。

关闭一个打开的文件,用close函数。

当一个进程终止时,它所有已打开的文件都由内核自动关闭。

1.编写C语言程序2.查看运行结果四、文件上锁和锁的释放1. 题目要求设计一个程序,要求在“/root”下打开一个名为“5-11file”的文件,如果该文件不存在,则创建此文件。

打开后对其加上强制性的写入锁F_WRLCK,按回车后解锁F_UNLCK,然后加上读出锁F_RDLCK,按回车后再解锁F_UNLCK。

程序在终端1运行后会显示程序的进程号,再打开终端2,会提示此文件处于锁定状态,此时在终端2可以多按回车,观察程序的运行结果。

然后在终端1按回车,等待终端1解锁后,在终端2才可锁定此文件,你可观察到强制性锁是独占状态,当在终端2解锁后,在终端1或2可加读出锁,在读出锁状态终端1或2的运行不需要等待,因为读出锁是处于共享状态,请编写程序并测试程序运行的结果。

2.分析主程序先用open函数打开文件“5-11file”,如果该文件不存在,则创建此文件;接着调用自定义函数lock_set:先传递参数“F_WRLCK”给文件“5-11file”加锁,并打印输出给文件加锁进程的进程号,然后先传递参数“F_UNLCK”给文件“5-11file”解锁,并打印输出给文件解锁进程的进程号;在自定义函数lock_set 给文件上锁语句前,加上判断文件是否上锁的语句,如果文件已经被上锁,打印输出给文件上锁进程的进程号。

3.编写C语言程序4.执行程序终端1:加上写入锁的是: 5403释放强制性锁: 5403文件已加上写入锁,其进程号是: 5404文件已加上写入锁,其进程号是: 5404文件已加上写入锁,其进程号是: 5404加上读取锁的是: 5403释放强制性锁: 5403终端2:文件已加上写入锁,其进程号是: 5403文件已加上写入锁,其进程号是: 5403文件已加上写入锁,其进程号是: 5403加上写入锁的是: 5404释放强制性锁: 5404加上读取锁的是: 5404释放强制性锁: 5404五、流文件的打开和关闭带缓存的流文件I/O操作,是基于输入/输出(I/O)流机制的文件操作,又做文件流(File Stream)的操作。

下面具体说明文件流的关闭与打开。

1.题目要求设计一个程序,要求用流文件I/O操作打开文件“5-12file”,如果该文件不存在,则创建此文件。

2.题目分析带缓存的基于输入/输出(I/O)流机制的文件操作时,打开文件用fopen函数,关闭文件用fclose函数。

3.程序编写4.运行结果可以看到程序运行后创建了”5-12file”文件六、实验总结通过本次实验,我掌握了Linux下用C语言读写文件的方法,包括带缓存和不带缓存的方法。

另外也学会了用C语言修改文件权限等知识点。

可以看出Linux和C 语言是浑然一体地,可以用C语言无缝地操作Linux系统。

实验报告在Linux中进程标识有进程号(PID)和它的父进程号(PPID)。

其中,PID唯一地标识一个进程。

PID和PPID都是非零的正整数。

在Linux中获得当前进程的PID 和PPID的系统调用为getpid和getppid函数。

1.程序编写2.编译运行可看到,每次运行的pid都是不同的。

四、子进程的创建进程调用fork函数创建一个新进程,由fork创建的新进程被称为子进程(child process)。

该函数被调用一次,但返回两次,两次返回的区别是子进程的返回值是0,而父进程的返回值则是新子进程的进程PID。

子进程和父进程继续执行fork之后的指令。

子进程是父进程的复制品。

例如,子进程获得父进程数据空间、堆和栈的复制品。

注意,这是子进程所拥有的拷贝。

父、子进程并不共享这些存储空间部分,通常父、子进程共享代码段1.编写C语言程序2.运行程序五、进程的退出1.题目要求设计一个程序,要求子进程和父进程都在显示输出一些文字后分别用exit和_exit函数终止进程。

2.题目分析由于printf函数使用的是缓冲I/O方式,遇到”\n”时自动将数据从缓冲区读出。

可以看出,调用exit函数时,缓冲区中的记录能正常输出;而调用_exit时,缓冲区中的记录无法输出。

Linux标准函数库中,有一种操作称为“缓冲I/O”,每次读写文件时,都是在缓冲区里读取、写入。

写入文件时,等满足一定条件才将缓冲区的内容一次性写入文件。

但是,有时没有满足选定的条件,数据只存在缓冲区内,如果这时调用_exit 函数直接关闭进程,缓冲区中的数据就会丢失。

3.程序编写4.程序执行可以看到,程序只在父进程进行了输出。

这是因为子进程调用了_exit()函数,没有进行缓冲区IO的刷新。

六、实验总结通过本次试验,我了解了Linux的进程机制,学会了基本的进程创建,进程终止,学会了在Linux下用C语言操作进程。

了解到了Linux是一个多任务操作系统,允许我们使用计算机系统,多个进程并发执行。

实验报告一、实验目的了解线程的基本概念掌握线程相关函数及应用理解线程同步互斥二、线程概述线程定义为进程内一个执行单元或一个可调度实体。

在不拥有线程的进程概念中,进程既是一个拥有资源的独立单位,它可独立分配虚地址空间、主存和其它,又是一个可独立调度和分派的基本单位。

在有了线程以后,资源拥有单位称为进程(或任务),调度的单位称为线程、又称轻进程(Light Weight Process,LWP)。

多线程的进程在同一地址空间内包括多个不同的控制流,也即属于同一进程下的线程,它们共享进程拥有的资源,如代码、数据、文件等。

线程也独占一些资源,如堆栈、程序计数器等。

多线程系统的优点包括对用户响应的改进,进程内的资源共享,以及利用多处理器体系结构的便利。

从实现的角度看,把线程分为用户级线程和内核级线程。

用户级线程对程序员来说是可见的,而对内核来说是未知的,用户空间的线程3.程序执行实验报告一、实验目标理解端口及Socket的基本概念掌握面向连接的TCP编程掌握面向非连接的UDP编程了解I/O多路利用的控制了解复杂网络程序的实现二、协议概述1.TCP/IP协议TCP/IP协议(Transmission Control Protocol/Internet Protocol)叫做传输控制/网际协议,又叫网络通信协议。

TCP/IP是20世纪70年代中期美国国防部为其ARPANET广域网开发的网络体系结构和协议标准,以它为基础组建的Internet是目前国际上规模最大的计算机网络。

正因为Internet的广泛使用,使得TCP/IP成了事实上的标准。

TCP/IP虽然叫传输控制协议(TCP)和网际协议(IP),但实际上是一组协议,它包含了上百个功能的协议,如ICMP、RIP、TELNET、FTP、SMTP、ARP、TFTP等,。

相关主题