メインコンテンツにスキップ

ユーティリティプロセス

utilityProcess は、Node.jsとメッセージポートが有効になった子プロセスを作成します。Node.jsの child_process.fork APIと同等の機能を提供しますが、子プロセスの起動にはNode.jsの代わりにChromiumの サービスAPI を使用します。

プロセス: メイン

メソッド

utilityProcess.fork(modulePath[, args][, options])

  • modulePath string - 子プロセスでエントリポイントとして実行するスクリプトへのパス。
  • args string[] (オプション) - 子プロセスで process.argv として使用できる文字列引数のリスト。
  • options Object (オプション)
    • env Object (オプション) - 環境変数のキーと値のペア。デフォルトは process.env です。
    • execArgv string[] (オプション) - 実行可能ファイルに渡される文字列引数のリスト。
    • cwd string (オプション) - 子プロセスの現在の作業ディレクトリ。
    • stdio (string[] | string) (オプション) - 子プロセスの stdoutstderr のモードを設定できます。デフォルトは inherit です。文字列値は pipeignoreinherit のいずれかになります。これらの値の詳細については、Node.jsの stdio ドキュメントを参照してください。現在、このオプションは stdoutstderrpipeinherit、または ignore に設定することのみをサポートしています。 stdinignore 以外のプロパティに設定すると、サポートされていないためエラーが発生します。たとえば、サポートされている値は次のように処理されます。
      • pipe: ['ignore', 'pipe', 'pipe'] と同等
      • ignore: ['ignore', 'ignore', 'ignore'] と同等
      • inherit: ['ignore', 'inherit', 'inherit'] と同等 (デフォルト)
    • serviceName string (オプション) - app.getAppMetrics が返す ProcessMetricname プロパティと、appchild-process-gone イベント に表示されるプロセス名。デフォルトは `Node Utility Process` です。
    • allowLoadingUnsignedLibraries boolean (オプション) macOS - このフラグを有効にすると、ユーティリティプロセスはmacOSの Electron Helper (Plugin).app ヘルパー実行可能ファイルを介して起動されます。これは、com.apple.security.cs.disable-library-validation および com.apple.security.cs.allow-unsigned-executable-memory 資格でコード署名できます。これにより、ユーティリティプロセスは署名されていないライブラリを読み込むことができます。この機能が特に必要でない限り、無効にしておくことをお勧めします。デフォルトは false です。
    • respondToAuthRequestsFromMainProcess boolean (オプション) - このフラグを使用すると、netモジュール を介して作成されたすべてのHTTP 401および407ネットワークリクエストは、 ClientRequest オブジェクトのデフォルトの login イベントではなく、メインプロセスの app#login イベントを介して応答できるようになります。.

戻り値 UtilityProcess

クラス: UtilityProcess

UtilityProcess のインスタンスは、Node.js統合を備えたChromiumによって生成された子プロセスを表します。

UtilityProcessEventEmitter です。

インスタンスメソッド

child.postMessage(message, [transfer])

  • message any
  • transfer 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() を使用してメッセージを送信すると発行されます。