如何使用Node.js生成子進程

了解如何使用Node.js生成子進程

Node.js提供了一個child_process提供生成子進程功能的模塊。

要求模塊,並獲得spawn從它的功能:

const { spawn } = require('child_process')

那你可以打電話spawn()傳遞2個參數。

第一個參數是要運行的命令。

第二個參數是包含選項列表的數組。

這是一個例子:

spawn('ls', ['-lh', 'test'])

在這種情況下,您可以運行ls帶有2個選項的命令:-lhtest。這導致命令ls -lh test,(鑑於test文件存在於您在其中運行此命令的同一文件夾中),從而導致有關該文件的詳細信息:

-rw-r--r--  1 flaviocopes  staff     6B Sep 25 09:57 test

結果spawn()函數調用是ChildProcess標識生成的子進程的類。

這是一個稍微複雜一些的示例,可以正常工作。我們看test文件,只要更改了文件,我們就運行ls -lh命令就可以了:

'use strict'

const fs = require(‘fs’) const { spawn } = require(‘child_process’) const filename = ‘test’

fs.watch(filename, () => { const ls = spawn(‘ls’, [’-lh’, filename]) })

缺少一件事。我們必須將子進程的輸出通過管道傳遞給主進程,否則我們將看不到任何輸出。

為此,我們致電pipe()上的方法stdout子進程的屬性:

'use strict'

const fs = require(‘fs’) const { spawn } = require(‘child_process’) const filename = ‘test’

fs.watch(filename, () => { const ls = spawn(‘ls’, [’-lh’, filename]) ls.stdout.pipe(process.stdout) })

免費下載我的Node.js手冊


更多節點教程: