linux操作系统shell脚本编程实验报告,“Linux操作系统”实验报告模板.doc

课程编号:B080103040

Linux操作系统

实验报告

姓 名姚柯杰学 号班 级软工1212指 导 教 师石 凯实验名称Linux操作系统实验开 设 学 期2014-2015第一学期开 设 时 间第11周——第18周报告日期评 定 成 绩评定人石 凯评 定 日 期

东北大学软件学院

实验一 熟悉Linux环境

一、举例列出常用的shell命令使用方法

1.目录操作

(1)mkdir abc 创建一个目录abc

(2)cd /abc 将工作目录改变到abc

(3)cd 改变当前目录到主目录

(4)ls 列出当前目录的内容

(5)ls -l 输出当前目录内容的长列表,每个目录或文件占一行

(6)pwd 显示当前目录的全路径

2.文件显示实用程序

(1)cat mx.c 显示mx.c文件内容

(2)more mx.c 分屏显示mx.c内容

(3)cat file1 file2 连接file1 和file2

3文件管理实用程序

(1) cp file1 file2 将文件1复制到文件2

(2)mv file1 file2 将文件重命名为file2

(3)rm filename 删除文件filename

通过实例写出Linux下C程序编辑运行过程。

在终端命令下输入vi filename 命令,这里我输入vi helloworld.c 创建并打开helloworld.c文件

按i进入编辑模式,输入下列code:

# include

void main(void)

{

Printf(“hello world!\n”);}

输入:wq保存退出

输入cc helloworld.c编译,在输入./a.out运行

实验总结

在实验一中,我初步对linux有了初步的了解,能熟练目录和文件进行操作,并且能用linux进行基本简单的基于c的编程。师傅领进门,修行在个人,算是通过这个实验进入了linux的门。

实验二 文件操作

实现CP命令

实现思路:提取出源路径和目标路径

此处以hello。C文件为源文件,目标文件1.c。

在调试cp命令中,由于一开始并未定义缓冲区,导致程序出错,后假如缓冲区,程序得以正常运行。

实现ls命令

实现思路:调用dirent.h来实现打开目录流,定义变量,随后对变量进行判定用opendir、readdir打开并读取目录流,将值传递给另一个变量,打印出来。

编译源程序并运行:

在实现ls命令中使用man手册查找需要的dir等目录流信息,man是个强大的命令,在编程的过程中由于疏忽一开始并未假如判断条件,有些突发情况会难以处理,最后通过课件修过过来。

设备文件操作

鼠标对应的设备文件是 ?/dev/input/

实验三 进程间通信

(一)进程的创建(必做题)

编写一段程序,使用系统调用fork( )创建两个子进程,在系统中有一个父进程和两个子进程活动。让每个进程在屏幕上显示一个字符;父进程显示字符“a”,子进程分别显示字符“b” 和“c”。试观察记录屏幕上的显示结果,并分析原因。

创建一个新的子进程。其子进程会复制父进程的数据与堆栈空间。Fork成功则在父进程会返回新建立的子进程pid,而在新建立的子进程中则返回0。如果fork失败则直接返回-1。所以在循环条件上出现上述情况。

修改已编写的程序,将每个进程的输出由单个字符改为一句话,再观察程序执行时屏幕上出现的现象,并分析其原因。(必做题)

子进程创建成功,到下一个while,第二个子进程成功到最后循环,输入parents1-500,随后返回继续上面子进程的循环输出。

【思考题】

1.系统是怎样创建进程的? 答:在UNIX系统中,只有0进程是在系统引导时被创建的,在系统初启时由0进程创建1进程,以后0进程变成对换进程,1进程成为系统中的始祖进程。UNIX利用fork( )为每个终端创建一个子进程为用户服务,每个终端进程又可利用fork( )来创建其子进程,从而形成一棵进程树。

2.当前运行的程序(主进程)的父进程是什么?

建立如下的c文件来获取pid

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值