高级编程之进程(一)

 进 程

 

1、进程的概念
 1、进程是一个程序的一次执行过程。
 2、进程是一个可独立调度的任务,是操作系统的最小调度单位。

2、进程和程序的区别
 2.1  程序:静态 是一种资源文件 没有执行过程
 2.2  进程:动态 有生命周期的 执行过程。

3、进程的特点和分类
 3.1 特点:

  PID: ===》进程标识符 ===》进程在操作系统中的合法唯一标识。

  PPID: ==》父进程的进程标识符 ===》每个进程都有一个父进程。

  空间分布: 文本段  静态数据 栈区  堆区
 
 3.2 分类
  
  交互式进程

  批处理进程
  
  守护进程

 3.3 状态
   运行态  等待态  暂停态  僵尸态

  状态切换/调整:!!!!!!!!注意所有如下指令都必须在当前终端执行
        其他终端中无效

  0、xxx &  ===》将xxx程序放到后台执行
  
  1、fg 命令  ===》将后台执行的程序放到前台执行。
   fg num   ==>将指定的任务调度到前台执行

  2、bg 命令  ===》将挂起的程序从前台放到后台执行。
   bg num   ==>将指定的任务调度到后台执行。

  3、jobs 命令 ==》查看当前终端的所有进程任务列表。


  ctrl+c 停止前台正在运行的程序。
  ctrl+z 暂停前台正在运行的程序。

 kill 发送信号:

 kill -l   ===>显示所有系统预置的信号

 发送命令: kill  -信号编号/信号的宏名称  进程pid
      kill -19  12345  ===>给pid是12345的进程发送一个编号
            是19 号的信号。
   等价于: kill -SIGSTOP 12345

 kill 12345  ==> kill -15 12345 ===>终止进程

 kill  -9   进程pid
 killall  -9 进程名称

 ctrl+z   === kill -19 xxx
 ctrl+c   === kill -2  xxx

 top 命令   ===>动态显示进程的排名
  默认按照CPU的使用率排序

 ps  命令   ===》某一时刻系统中全部进程的任务列表
  ps -ef
  ps aux

 pstree 命令  ===>以树形方式显示所有进程的前后关系

/////////////////////////////////////////////////////////////////
多进程编程:

4、进程的创建fork函数

头文件: unistd.h
函数原型:  pid_t fork(void);
功能: 通过该函数可以动态生成一个同名进程。
    每次调用fork函数会自动生成一个子进程。
    fork之后的子进程与父进程的代码逻辑一致,克隆体。
    fork出的新子进程的执行过程从fork之后执行。

参数: 无
返回值: pid_t   ===>int
   pid >0  pid == 新创建的子进程的pid号,该部分表示父进程空间
   pid =0  pid == 当前子进程的进程空间
   pid <0  异常,表示创建失败。

辅助函数:
#include <sys/types.h>
#include <unistd.h>

pid_t getpid(void);
功能:获取当前进程自身的pid号

pid_t getppid(void);
功能:获取当前进程父进程pid号

面试题:
 如果在主进程中依次fork两次,会生成几个进程
 他们之间的关系如何表示,有多少个父进程 子进程 孙进程,

 答:共产生4个进程,1父,2子,1孙。
 假定当前进程为A,fork(); 产生第一个子进程 A1。fork(); A调
 用fork产生它的子进程A2, 前一个子进程A1调用fork再次产生进
 程 A11。所有总共产生了3个子进程,分别是 A1, A2, A11。再加A
 共四个进程。


作业题:
 使用fork函数生成100个子进程,将其中pid号是偶数的进程
 的pid号打印输出。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值