我们先了解一个概念。

在Linux系统中,触发任何一个事件时,系统都会将它定义成为一个进程,并且给予这个进程一个ID,称为PID,同时依据触发这个进程的用户与相关属性关系,给予这个PID一组有效的权限设置。

那么,我们必须了解什么叫“触发事件”。

一、如何产生一个进程

其实就是,执行一个程序或命令,就可以触发一个事件而取得一个PID。而系统是仅认识二进制文件的,当我们要让系统进行工作时,当然就需要启动一个二进制文件,这个二进制文件就是程序。

程序(program):通常为二进制程序放置在存储媒介中,以物理文件的形式存在。

进程(process):程序被触发后,执行者的权限与属性、程序的程序代码与所需数据等都会被加载到内存中,操作系统并给予这个内存单元一个标识符(PID)。

可以说,进程就是一个正在运行的程序。

二、子进程与父进程

进程彼此之间是有相关性的。

因为每个进程都有一个PID,它的父进程就通过PPID来判断。且子进程可以取得父进程的环境变量。

eg:直接执行bash,进入子程序的环境中,用ps -l查看:


什么是进程,进程调用的流程_bash

观察PID与PPID,第一个bash的PID与第二个bash的PPID是一样的,因为第二个bash是由第一个bash产生的。

三、进程互相调用的流程:fork and exec

复制(fork)的方式产生一个一模一样的子进程,然后被复制出来的子程序再以 exec的方式来执行实际要进行的进程,最后就成为一个子进程的存在。如下:

什么是进程,进程调用的流程_bash_02