ユーティリティプロセス
utilityProcess
は、Node.jsとメッセージポートが有効になった子プロセスを作成します。Node.jsの child_process.fork
APIと同等の機能を提供しますが、子プロセスの起動にはNode.jsの代わりにChromiumの サービスAPI を使用します。
プロセス: メイン
メソッド
utilityProcess.fork(modulePath[, args][, options])
modulePath
string - 子プロセスでエントリポイントとして実行するスクリプトへのパス。args
string[] (オプション) - 子プロセスでprocess.argv
として使用できる文字列引数のリスト。
戻り値 UtilityProcess
クラス: UtilityProcess
UtilityProcess
のインスタンスは、Node.js統合を備えたChromiumによって生成された子プロセスを表します。
UtilityProcess
は EventEmitter です。
インスタンスメソッド
child.postMessage(message, [transfer])
message
anytransfer
MessagePortMain[] (オプション)
子プロセスにメッセージを送信し、オプションで1つ以上の MessagePortMain
オブジェクトの所有権を転送します。
例:
// Main process
const { port1, port2 } = new MessageChannelMain()
const child = utilityProcess.fork(path.join(__dirname, 'test.js'))
child.postMessage({ message: 'hello' }, [port1])
// Child process
process.parentPort.once('message', (e) => {
const [port] = e.ports
// ...
})
child.kill()
戻り値 boolean
プロセスを正常に終了します。POSIXではSIGTERMを使用しますが、終了時にプロセスが確実に回収されるようにします。この関数は、killが成功した場合はtrueを、そうでない場合はfalseを返します。
インスタンスプロパティ
child.pid
子プロセスのプロセスID(PID)を表す Integer | undefined
です。エラーが原因で子プロセスの生成に失敗した場合、値は undefined
になります。子プロセスが終了すると、`exit` イベントが発行された後、値は `undefined` になります。.
child.stdout
子プロセスのstdoutを表す NodeJS.ReadableStream | null
です。子がoptions.stdio [1]を 'pipe'以外に設定して生成された場合、これは `null` になります。子プロセスが終了すると、`exit` イベントが発行された後、値は `null` になります。.
// Main process
const { port1, port2 } = new MessageChannelMain()
const child = utilityProcess.fork(path.join(__dirname, 'test.js'))
child.stdout.on('data', (data) => {
console.log(`Received chunk ${data}`)
})
child.stderr
子プロセスのstderrを表す NodeJS.ReadableStream | null
です。子がoptions.stdio [2]を 'pipe'以外に設定して生成された場合、これは `null` になります。子プロセスが終了すると、`exit` イベントが発行された後、値は `null` になります。.
インスタンスイベント
イベント: 'spawn'
子プロセスが正常に生成された後に発行されます。
イベント: 'exit'
戻り値
code
number - posixのwaitpid、またはWindowsのGetExitCodeProcessから取得したプロセスの終了コードが含まれています。
子プロセスが終了した後に発行されます。
イベント: 'message'
戻り値
message
any
子プロセスが process.parentPort.postMessage()
を使用してメッセージを送信すると発行されます。