进程编译与fork函数

一.进程

1.什么是进程

进程:(进行中的程序)--正在运行的程序 (动态的) ---内存 
程序的一次执行过程,是程序的一个实例。


2.进程和程序

程序 -- a.out (可执行程序) ---静态的 ,一个程序可以对应多个进程。


程序 加载 到内存 运行起来 成为了 进程。 


程序 --- 静态---硬盘 

进程--- 动态---内存

 

 

3.为什么需要进程

为了描述和管理程序运行时动态过程,操作系统为了管理程序的动态运行过程。

PCB---进程控制块

 

 

4.进程的组成

程序的构成:程序 = 代码 + 数据

栈 
堆 
静态区 
字符串常量区 
代码段 
 

 

 

进程 = PCB + 进程实体(栈,堆,静态区...)

 

 5.查询进程相关命令

1)ps aux | grep       //进程名 

      PID,                   //进程标识符
      PPID,                 //父进程ID号  parent 
      当前工作路径     //chdir
 

2)查看进程相关信息

        1.就绪态、运行态    R
        2.睡眠态、等待态    
            可唤醒等待态    S
            不可唤醒等待态    D
        3.停止态    T
        4.僵尸态    Z
        5.结束态    

 

 

3)top
    根据CPU占用率查看进程相关信息

4)kill和killall发送一个信号
    kill PID
    发送信号+PID对应的进程,默认接收者关闭
    
    kill -9 进程PID号 
    kill -l //查看信号列表 
    killall -9 进程名
    发送信号 进程名对应的所有进程
    killall a.out //通过 进程名 发信号 
    kill 信号编号 进程ID 

 

 二.fork函数(进程的创建)

fork();
    pid_t fork();
    一次调用,会返回两次。
    子进程先运行和是父进程先进程,顺序不确定。
    变量不共享。
    
    子进程复制父进程的0到3g空间和父进程内核中的PCB,但id号不同。

功能:通过该函数可以从当前进程中克隆一个同名新进程。
          克隆的进程称为子进程,原有的进程称为 父进程。
          子进程是父进程的完全拷贝。
          子进程的执行过程是从fork函数之后执行。
          
          子进程与父进程具有相同的代码逻辑。

    返回值:int 类型的数字。
            在父进程中:成功 返回值是子进程的pid号 >0
                        失败 返回-1;
            在子进程中:成功 返回值 0
                        失败 无

 

三.注意

 1.结束掉子进程,查看当前系统中父子进程的状态 (top/ps/pstree) // 子进程结束,父进程没有收尸 ---僵尸态
  2.结束掉父进程,查看当前系统中父子进程的状态     //孤儿进程 --- 子进程还在,父进程不在。(init收养子进程)
                                                                                     //此时,子进程是一个后台进程
 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值