综合实验说明.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
综合实验说明要点

综合实验说明 Linux进程间关系 每个进程第一个进程是都有一个识别号,即进程号(PID),系统启动后第一个进程是init,它的PID是1,新进程由fork系统调用来产生,旧进程称为父进程,新进程称为子进程。除init进程外,其他进程都有父进程。 init login shell 在shell提示符后运行的命令或程序除特殊情况外均以shell子进程的形式运行 父进程 父进程 子进程 fork() wait() exit() wait()暂停父进程直到子进程退出 exec() ?shell是如何运行程序的 1.打印命令提示符 2.取得命令 3.建立新进程 4.等待子进程 2.得到子进程状态 fork wait exec main exit 前、后台进程在wait()方面有何区别? shell 一、shell与内核的关系 Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。 Shell是一个命令解释器,它拥有自己的内建的shell命令集。它解释由用户输入的命令并且把它们送到内核执行。 Shell起着协调用户与系统的一致性和在用户与系统之间进行交互的作用。 类似于windows下的和cmd.exe,也就是命令提示符。 Shell的主要版本 bash (Bourne Again Shell,Linux使用的默认Shell) tcsh ksh shell,顾名思义就是包含在Fedora 外的一层“壳”,它是Fedora 与用户之间的界面、程序,它接受、解释、执行用户的命令。 shell可以接受的命令有几类: 一类是shell的内部命令,它们包含在shell中,如cd、pwd等等,如同DOS的一样。查看内部命令的使用可以用help命令。 另一类是外部命令,它们以可执行文件的方式存放在文件系统某个特定的目录中,如存放在/bin、/sbin、/usr/bin等目录中,这类命令比如ls、cp、rm等命令。 当然,这类应用程序也可以是购买的商业程序、应用软件等等。 用户输入命令 提交给Shell 是否为内部命令? 在系统中查找该命令的 文件并调入内存执行 内核中的系统功能调用 是 不是内部命令,而是外部命令或实用程序 命令解释过程 在查找命令时分为两种情况: (1)用户给出了命令路径,shell就沿着路径查找,若找到则调入内存执行,找不到则给出出错信息。 (2)用户没有给出命令路径。Shell就沿着环境变量PATH给出的路径依此查找,若找到则调入内存,否则给出出错信息。 # .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin:. BASH_ENV=$HOME/.bashrc USERNAME=root export USERNAME BASH_ENV PATH ~/.bash_profile 注:参见教材p98 #echo $PATH 程序结构 在shell命令中,我们将ysh中的命令分成4种: 普通命令(即外部命令) 重定向命令 管道命令 内部命令 初始化环境 打印提示符,获取用户输入的命令 解释命令 寻找命令文件 执行命令 程序结束 void init_environ() { 打开test_profile文件,并准备读取 getenviron(n,buf);/*getenviron()函数*/ envhis.start=0;/*初始化history循环数组*/ envhis.end=0; head=end=NULL;/*初始化jobs链表指针*/ } 初始化环境 在本程序中主要使用的数据结构是循环数组和链表。 1.循环数组 在history命令中,用数组来存放我们输入过的命令。假设有一个能够记录10条历史记录的数组。其定义如下: typedef struct ENV_HISTROY{ int start; int end; char his_cmd[10][100]; } ENV_HISTORY; ENV_HISTORY envhis; envhis.start envhis.end

文档评论(0)

dajuhyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档