第六章 用户接口实验_第1页
第六章 用户接口实验_第2页
第六章 用户接口实验_第3页
第六章 用户接口实验_第4页
第六章 用户接口实验_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1第六章第六章 用户接口实验用户接口实验 6.1 6.1 实验实验目的 6.1.1 6.1.1 控制台命令接口控制台命令接口理解面向操作命令的接口SHELL学会简单的SHELL编程 6.1.2 6.1.2 系统调用系统调用理解操作系统调用的运行机制掌握创建系统调用的方法6.2 6.2 准备知识准备知识26.2.1 6.2.1 控制台命令接口控制台命令接口 操作系统向用户提供一组控制台命令,用户可以通过终端键入命令的方式获得操作系统的服务,并以此来控制自己作业的运行。一般来讲,控制台命令应该包含:一组命令、终端处理程序以及命令解释程序。 关键字参考:关键字参考:echo 在终端上显示bash 特

2、殊变量19 保存当前进程或脚本的前9个参数ls 列举文件wc 统计数量function 定义函数 建立建立BashBash脚本脚本: :编辑编辑Bash脚本脚本$ vi script#! /bin/bashecho Hello world !测试脚本测试脚本$ source script更改脚本属性更改脚本属性$ chmod a+x script执行脚本执行脚本 $ ./script 36.2.2 6.2.2 添加系统调用添加系统调用 p1添加源代码asmlinkage int sys_foo(int x) printf(%dn,x);p2连接新的系统调用# define _NR _name

3、NNN4# define _NR _foo 222ENTRY(sys_call_table) .long SYSMBOL_NAME(sys_ni_syscall) .long SYSMBOL_NAME(sys_exit) .long SYSMBOL_NAME(sys_fork) .long SYSMBOL_NAME(sys_foo) 53 3重新编译内核重新编译内核rootlinuxserver root# make menuconfig / 配置新内核rootlinuxserver root# make dep / 创建新内核rootlinuxserver root# make module

4、s_install / 加入模块rootlinuxserver root# make clean / 清除多余创建的文件rootlinuxserver root# make bzImage / 生成可执行内核引导文件 6p4使用新编译的内核 cp a /usr/src/linux-2.4.2/arch/i386/boot/bzImage /boot p5重新配置/etc/lilo.conf 文件vi /etc/lilo.confimage=/boot/bzImage#启动内核的位置, 即自己新配置的内核所在目录label=xhlinux #给内核起一个名称, 配置完成, 重新启动的时候, 会显

5、示这个名称; #用户可以选择该项, 重启后, 系统将进入你新配置的内核进行引导。7 read_only #定义新的内核为只读 root=/dev/hda5 #定义硬盘的启动位置是/dev/hda5, 在该设计中没有变 #仿照以前内核引导的位置, 不用修改, 用以前的就可以 p6完成以上配置后,重新启动系统进入自己的新系统。86.3 6.3 实验内容实验内容 6.3.1 控制台命令接口实验查看Bash版本编写Bash脚本,统计/my目录下c语言文件的个数 6.3.2 系统调用实验 一、编程调用一个系统调用fork(),观察结果二、编程调用创建的系统调用foo(),观察结果三、自己创建一个系统调用

6、mycall(),实现功能:打印字串到屏幕上四、编程调用自己创建的系统调用6.4 6.4 实验指导实验指导9一查看Bash版本$echo $BASH_VERSION二编写Bash脚本,统计/my目录下c语言文件的个数cd /home/student #在home/student目录下编程 vi count #! /bin/bash function count echo n Number of matches for $1: #接收程序的第一个参数 ls $1|wc l #对子程序的第一个参数所在的目录进行操作 6.4.1 6.4.1 控制台命令接口实验指导控制台命令接口实验指导10mkdir

7、 mycd myvi 1.c #在my目录下建立几个c文件, 以便用来程序测试 .cd .chmod +x countcount ./my/*.c 116.4.2 系统调用实验指导 一编程调用系统调用fork( )# include int main()int iUid;iUid=fork();if(iUid=0)for(;) printf(This is parent.n); sleep(1); if(iUid0)for(;) printf(This is child.n);sleep(1);if(iUid0) printf(Can not use system call.n);return

8、 0; 12下面是可能得到的一种结果:下面是可能得到的一种结果:this is child.this is parent.this is child.this is parent.this is parent.this is child.this is child.this is parent.this is parent.this is child.this is child.this is parent.this is parent.this is child. 13二编程调用创建的系统调用二编程调用创建的系统调用foo( )foo( )#include #include _syscall

9、1(char*,foo,int,ret)main()int I,J;I=100;J=0;J=foo(I);14 printf(This is the result of new kerneln);printf(%d,j); gcc o I /usr/src/linux-2.4.2/include test.c./test15三创建系统调用三创建系统调用mycall()mycall()实现功能:打印字串到屏幕上实现功能:打印字串到屏幕上asmlinkage void mycall(char *str) printk(%sn,str); # include _NR_mycall 223 / 因为_

10、NR_foo是222, 所以这个只能用223了 .long SYMBOL_NAME(sys_mycall) 16rootlinuxserver root# make menuconfig / 配置新内核rootlinuxserver root# make dep / 创建新内核rootlinuxserver root# make modules_install / 加入模块rootlinuxserver root# make clean / 清除多余创建的文件rootlinuxserver root# make bzImage / 生成可执行内核引导文件rootlinuxserver root# cp /usr/src/linux/arch/i386/boot/bzImage /boot/rootlinuxserver root# /sbin/lilo 17四编程调用自己创建的系统

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论