进程与进程间通信

Posted xiaoli94

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了进程与进程间通信相关的知识,希望对你有一定的参考价值。

1.进程

进程(process) 是一个已经开始执行但还没终止的程序实例。 Linux 系统下使用 ps 命令可以查看到当前正在执行的进程。每个进程包含有进程运行环境、内存地址空间、进程ID、和至少一个被称为线程的执行控制流等资源。同一个程序可以实例化为多个进程实体。操作系统中所有进程实体共享着计算机系统的 CPU、外设等资源。

2.进程状态

D: 不可中断的深度睡眠状态,处于这种状态的进程不能响应异步信号;
R: 进程处于运行态或就绪状态, 只有在该状态的进程才可能在 CPU 上运行。而同一时刻可能有多个进程处于可执行状态;
S:可中断的睡眠状态,处于这个状态的进程因为等待某种事件的发生而被挂起。;
T: 暂停状态或跟踪状态;
X: 退出状态,进程即将被销毁;
Z: 退出状态,进程成为僵尸进程。

技术图片

 

 

 

 

 

 

 

 

 

3.main函数

进程创建后通常需要调用 exec 族函数来装载程序可执行映像,并在完成装载后调用程序的 main()函数。

技术图片

参数 argc 是命令行参数的数目;

参数 argv 是指向参数的各个指针所构成的数组。argv[0]为程序的名称,后续的数组元素组成参数列表, argv[argc]值为 NULL

原型3 的 env 参数指向环境变量字符串的数组 

4.进程ID

  进程在创建时,内核会为之分配一个进程ID用来标识当前的进程,类型为 pid_t 的整数并保持同一时刻是唯一值,它最大值为pid_max 。当进程退出时,它的进程 ID 可回收循环使用。

getpid()函数可以获取当前进程的进程 ID

技术图片

5.父进程与子进程

进程创建时,创建进程为新进程的父进程,新进程是创建进程的子进程。 getppid()函数获取父进程的 PID
技术图片

6.UID,GID

UID:用户ID,GID:用户的组ID。使用 id 命令可以列出用户的 id当执行一个程序时,该程序将获取当前用户的 UID GID 作为进程的权限。

7.环境变量

(1)通过 main()函数的第 3 个参数 env 获取。 数组最后一个元素为 NULL 

技术图片

2) 通过 environ 全局变量获取。 在加载进程的时候,系统会为每一个进程复制一份 系统环境变量副本, 并保存在全局变量 environ 中。 

技术图片

3)通过 getenv()函数获取。 Linux 系统提供 getenv()setenv()等函数来操作环境变量,
技术图片

8.标准IO

技术图片

以上是关于进程与进程间通信的主要内容,如果未能解决你的问题,请参考以下文章

谈谈Mac进程间通信--XPC

iOS进程间通信

进程间通信

进程间通信

进程间通信

进程间通信