NodeJs-child_precess子进程的基础使用方法

创建异步进程

child_process.spawn()、child_process.fork()、child_process.exec() 和 child_process.execFile() 方法都遵循其他 Node.js API 惯用的异步编程模式。

每个方法都返回 ChildProcess 实例。 这些对象实现了 Node.js 的 EventEmitter API,允许父进程注册监听器函数,在子进程生命周期中当发生某些事件时调用。

child_process.exec() 和 child_process.execFile() 方法还允许指定可选的 callback 函数,当子进程终止时调用。

创建同步进程

child_process.spawnSync()、child_process.execSync() 和 child_process.execFileSync() 方法是同步的,且会阻塞 Node.js 事件循环、暂停执行任何其他代码,直到衍生的进程退出。

阻塞这些调用对于简化通用脚本任务和简化启动时应用程序配置的加载或处理非常有用。

ChildProcess 类

ChildProcess 类的实例都是 EventEmitter,表示衍生的子进程。

ChildProcess 的实例不是直接创建的,而是使用 child_process.spawn()、child_process.exec()、child_process.execFile() 或 child_process.fork() 方法来创建 ChildProcess 的实例。

close 事件

code 子进程的退出码。 signal 终止子进程的信号。 当子进程的 stdio 流被关闭时触发。 与 exit 事件的区别是,多个进程可能共享同一 stdio 流。

disconnect 事件

调用父进程的 subprocess.disconnect() 或子进程的 process.disconnect() 后会触发。 断开连接后就不能再发送或接收信息,且 subprocess.connected 属性会被设为 false。

error 事件

err 错误对象。 当出现以下情况时触发 error 事件: 无法衍生进程; 无法杀死进程; 向子进程发送信息失败。 发生错误后, exit 事件可能会也可能不会触发。 如果同时监听了 exit 和 error 事件,可能会多次调用处理函数。

exit 事件

code 子进程的退出码。 signal 终止子进程的信号。 当子进程结束后时触发。 如果进程退出,则 code 是进程的最终退出码,否则为 null。 如果进程是收到的信号而终止,则 signal 是信号的名称,否则为 null。 这两个值至少有一个是非空的。 当 exit 事件被触发时,子进程的 stdio 流可能依然是打开的。 Node.js 建立了 SIGINT 和 SIGTERM 的信号处理程序,且 Node.js 进程收到这些信号也不会立即终止。 Node.js 会执行一系列的清理操作后重新引发处理信号。

message 事件

message JSON 对象或原始值。sendHandle net.Socket 或 net.Server 对象,或 undefined。当子进程使用 process.send() 发送消息时触发。消息通过序列化和解析传递,收到的消息可能跟发送的不完全一样。

  • 版权声明: 本博客所有文章,未经许可,任何单位及个人不得做营利性使用!转载请标明出处!如有侵权请联系作者。
  • Copyrights © 2015-2020 翟天野

请我喝杯咖啡吧~