子进程(Child Processes)

    子进程模块提供了衍生子进程的能力,这个能力和 方式上类似,但不完全相同。这种能力主要由 函数提供:

    默认情况下,在 Node.js 的父进程和衍生的子进程之间会建立 stdinstdoutstderr 的管道。这也使得数据流可以以无阻塞的方式通过这些管道。但是请注意,有些程序内部使用行缓冲(line-buffered)I/O。虽然这并不影响 Node.js,它可能意味着发送到子过程数据可能无法立即消费。

    为了方便起见, 模块提供了少有的同步和异步的替代品 child_process.spawn() 和 。请注意,这些替代品是在 child_process.spawn()child_process.spawnSync() 的基础上实现的。

    • child_process.exec():衍生一个 shell 并在 shell 内部运行一个命令,当完成时,会向回调函数传递 stdoutstderr

    • child_process.fork():衍生一个新的 Node.js 进程,并且通过建立一个允许父进程和子进程之间相互发送信息的 IPC 通讯通道来调用指定的模块。

    对于某些使用情况,如自动化 shell 脚本,同步版本可能更方便。在多数情况下,同步的方法会显著地影响性能,因为它拖延了事件循环直到衍生进程完成。