本文内容主要为进程相关概念和进程常用函数,读者可以同时进行操作验证,如有不当之处或问题,欢迎私信指正。
一、进程间的通信方式
二、进程&程序
--》程序是静态的,它是保存在磁盘上的指令的有序集合;
--》进程是动态的,指正在运行的程序,每个进程都有独立的空间,进程是资源分配的最小单元,它是程序运行的过程,包含创建、调度、消亡
三、进程的分类
1.交互进程(由shell控制和运行的,可在前后台运行)--./文件名& -->进程在后台运行
查看进程状态中,+表示前台进程
2.批处理进程(不属于某个终端,它被提交到一个队列中以便顺序执行,例如:编译器的编译操作,数据库搜索引擎)
3.守护进程(在后台运行,在linux启动时开始执行,系统关闭时结束)
四、进程的状态
简单来说,进程的状态有三种:就绪状态、执行状态、阻塞状态。
有的规定将进程状态分为以下几种:
1.运行状态(R);
2.阻塞状态:可中断的阻塞状态(S)、不可中断的阻塞状态(D);
3.暂停状态(T);
4.僵尸状态(Z);
5.消亡状态 (X)
五、创建进程
1.函数fork()
描述:fork()函数中,pid==0为子进程;pid》0位父进程
2.函数vfork()
注:fork()和vfork()的区别
(1)数据段不同:
fork():子进程拷贝父进程的数据段、代码段
vfork():子进程与父进程共享数据段
(2)执行次序
fork():父子进程的执行次序不确定
vfork():保证子进程先运行,调用exec或者exit之前与父进程是共享的,在它调用
exec或exit之后父进程才可能被调度运行
六、进程的退出(exit()和_exit())
注:exit()函数自带清理缓冲区,_exit()函数不自带清理缓存区,使用fflush函数来清理缓存区
七、wait()和waitpid()
函数功能:wait() 阻塞回收子进程资源
waitpid() 既可以阻塞回收,也可以非阻塞回收
函数的使用方法比较简单,可以man一下,我们特别注意一下waitpid()函数参数2的用法,通过一个简单的函数来体现一下用法
八、守护进程
1.守护进程的特点:
(1)守护进程是linux中的后台服务进程
(2)守护进程通常独立于控制终端且周期性的执行某种待处理某些事件的发生,一般 在
系统启动时开始运行,系统关闭时终止
2.创建守护进程
写在文末:本文旨在整理学习笔记,代码均为原创,如有需要,私信博主即可~如有不当或错误之处,欢迎私信指正