日期:2014-05-16  浏览次数:20665 次

linux 笔记3
进程控制
1.进程的组成部分
一个进程由一个地址空间和内核内部的一组数据结构组成. 地址空间是由内核标记出来供进程使用的一组内存页面.
内核内部数据结构记录了有关每个进程的各种信息:
  a.进程的地址空间映射
  b.进程的当前状态
  c.进程已用的资源的信息
  d.进程已打开的文件和网络端口信息.
  e.进程的信号掩码(确定要封鎖哪些信号)
  f.进程的属主

2.进程的运行参数
  a.PID 内核分配给进程的独一无二的ID号
  控制进程的大多数命令或系统调用必须指明PID
  b.PPID 父PID
  linux没有提供创建新进程去运行某个特定程序的系统调用,现有进程需要自己克隆自身去创建一个新进程
  c.UID和EUID 真实的和有效的用户ID
  d.GID和EGID 类似之上
  e.谦让度
  f.控制终端
  大多数不是守护进程的进程都有一个与自己相关联的控制终端,控制终端决定了为标准输入,标准输出和标准错误通道而提供的默认链接.当用户从shell启动一个命令时,他的终端通常就成为该进程的控制终端.

3.进程的生命周期
为了创建一个新进程,一个进程就会用系统调用fork来复制本身.新进程拥有一个不同的PID和它自己记账信息.
除了内核创建的那几个进程以外,其他所有进程都是init的后代.
当一个进程执行完毕时,init调用一个名为_exit的例程来通知内核它已经做好了"消亡"的准备了.它提供一个退出码(整数)表明退出的原因.按照惯例,0表示正常退出
在允许进程完全消失前,linux要求该进程的消亡得到其父进程的确认.
父进程是通过wait来确认的.
如果父进程比子进程消亡得早,那么这些"孤儿"子进程就成为init的子进程

4.信号
信号是进程级的中断请求,系统定义了大约30种不同各类的信号.使用这些信号的方式:
(1).作为一种通信手段在进程之间发送信号
(2).当键入特殊按键时,比如<ctrl-c>和<ctrl-z>,可以由终端驱动程序发送信号去终止,中断或挂起进程
(3).可以由管理员(使用kill命令)发送信息来达到各种結果
(4).当进程出错时,可以由内核发送信号
(5).可以由内核发送信号,通知一个进程有某种"受关注的"条件出现,比如一个子进程消亡或在I/O通道上有数据
当收到信号时,可能发生两种情况之一.
如果接收进程已经为这个特定信号指派了一个信号处理例程,处理之
否则,内核代表该进程采取某种默认措施.
一些基本的信号:
<
友情链接: 爱易网 云虚拟主机技术 云服务器技术 程序设计技术 开发网站 APP开发教程
Copyright © 2013-2024 爱易网页 当前在线:424人  网站在1时55分32秒内访问总人数:29141人 当前 31.20%  粤ICP备18100884号-2
# 名称 描述 默认 是否能捕获? 是否能封锁? 是否转储内存映像
1 HUP 挂起 终止     是           是          否        
2 INT 中断 终止     是           是          否        
3 QUIT 退出 终止     是           是          是        
9 KILL 杀死 终止     否           否          否        
b BUS 总线错误 终止     是           是          是        
11 SEGV 段错误 终止     是           是          是        
15 TERM 软件终止 终止     是           是          否      
b   STOP 停止 停止     否          否          否        
b   TSTP 键盘停止 停止     是           是          否      
b