Node基础模块 - process 和 child_porcess
Node 基础模块 - process / child_process ( 进程/子进程 )
进程
进程是计算机资源分配和调度的基本单元。
每一个应用程序启动会开启一个进程,分配固定的资源以及一个进程ID,并且进程之间是独立的
进程之间可以通过 IPC 进行通信
线程
线程是计算机最小的计算单元
进程可以拥有多个线程,但是线程只能属于一个进程
线程可以共享进程的部分资源
node 是单线程应用 ( 一个进程一个线程 )
node 通过创建多个进程来实现多线程 ( 为了提高 cpu 的利用率 )
process 模块的 process 模块作用
1、用来查看当前进程的信息
2、用来操作当前的进程
3、进程也继承 eventEmitter ,所以可以监听进程变化
常见进程的信息
process.pid :当前的进程 ID
process.ppid :当前进程的父进程 ID
process.env :当前进程的环境变量
process.cwd() :当前进程的启动目录
process.memoryUsage() :查看当前进程使用内存情况
process.argv :命令启动时候参数
操作当前的进程
process.exit :退出当前进程
process.chdir :改变当前工作目录
process.abort :终止当前进程
process.nextTick :加入下一个执行队列
监听进程变化
beforeExit :退出前执行
exit :调用了 exit 执行
uncaughtException :捕获到异常执行
SIGINT :ctrl+c 时候执行( 需要主动调用 exit 才会退出 )
IPC 通道相关方法/句柄
send 方法 :向其他进程发送信息
disconnect 方法 :结束进程连接
message 句柄 :当其他进程发送信息的时候,触发该函数
disconnect 句柄 :当进程调用 disconnect 时候触发
child_process 模块的 child_process 模块作用
1、用于创建子进程,并返回一个子进程实例 ( ChildProcess 类)
child_process 创建进程方法
exec(command[,options][,callbcak]) :回调函数,返回具体的输出数据
conmmand :带有参数的命令
options.cwd :工作目录
options.env : 环境变量
spwan(command[,args][,options]) :返回一个流对象,可以通过句柄获取数据
command :不带参数的命令
options.cwd :工作目录
options.env :环境变量
options.detached :父进程结束,子进程不结束
options.stdio:IPC 管道形式
fork(path) :返回一个子进程实例 ( ChildProcess ),创建一个 IPC 通道
path :子进程文件路径
创建进程方法不同
1、参数不同
2、返回数据类型和大小不同( exec小量数据,spwan大量数据 )
3、fork 返回一个子进程实例、spwan 返回一个流对象、exec 回调函数直接接受数据