Node.js中那些常用的进程通信方式

发布于:2025-05-13 ⋅ 阅读:(12) ⋅ 点赞:(0)

近期文章

Nodejs开发过程中,进程通信常常出现,本篇就尝试介绍一下常见通信方式。

1 什么是子进程?

在 Node.js 中,子进程是指通过主 Node.js 进程创建的独立进程。它们可以运行系统命令(如 lsgit 等)或其他脚本(如 Python、Shell 脚本等)。主进程和子进程之间可以通过标准输入输出(stdin、stdout、stderr)或 IPC(进程间通信)进行数据交换。

child_process 模块提供了以下主要方法来创建子进程:

  • spawn():异步创建子进程,适合需要持续输出或流式处理的任务。
  • exec():异步创建子进程,适合执行一次性命令并获取完整输出。
  • execFile():类似于 exec(),但直接执行文件,适合执行二进制文件。
  • fork():专门用于创建 Node.js 子进程,适合运行其他 Node.js 脚本。

2 核心方法详解

2.1 child_process.spawn(command, [args], [options])

  • 功能:异步创建子进程,执行命令,并以流的方式处理输入输出。
  • 参数
    • command:要执行的命令(字符串,例如 'ls')。
    • args:命令的参数(数组,例如 ['-l', '-a'])。
    • options:配置对象,例如:
      • cwd:子进程的工作目录。
      • env:环境变量。
      • shell:是否通过 shell 执行(默认 false)。
  • 返回值:返回一个 ChildProcess 实例。
  • 特点
    • 适合处理大输出或需要实时处理流的任务(如视频处理、日志流)。
    • 不会缓存输出,数据通过 stdoutstderr 流返回。

示例

const {
    spawn } = require('child_process');

// 执行 `ls -la` 命令
const ls = spawn('ls', ['-la']);

ls.stdout.on('data', (data) => {
   
  console.log(`输出:${
     data}`);
});

ls.stderr.on('data', (data) => {
   
  console.error(`错误:${
     data}`);
});

ls.on('close', (code

网站公告

今日签到

点亮在社区的每一天
去签到