コンテンツにスキップ

process

Since v8.0.75

processモジュールは、JSHアプリケーションで使用するために設計されています。

addShutdownHook()

現在のプロセスの終了時に呼び出すコールバック関数を追加します。

現在の実装では、JSHランタイムが管理する終了処理に入ったときに、このフックを呼び出します。 たとえば、スクリプトが正常に終了した場合や、process.exit()を呼び出した場合に実行します。

以下の場合は、呼び出しが保証されません。

  • SIGKILLkill -9などの強制終了
  • OSまたはGoランタイムレベルの致命的な異常終了
  • process.on(signal, handler)で捕捉していないシグナルの既定動作による終了

捕捉可能なシグナルでクリーンアップが必要な場合は、process.on(signal, handler)内でクリーンアップを実行してから終了処理に進むようにしてください。

複数の終了フックを登録すると、登録の逆順に実行します。現在の実装では、フックがpanicや例外を発生させても、残りのフックは実行を続けます。

構文
addShutdownHook(()=>{})
使用例
1
2
3
4
5
6
7
8
9
const process = require('process');
process.addShutdownHook(()=>{
    console.println("shutdown hook called.");
})
console.println("running...")

// 出力:
// running...
// shutdown hook called.
注意事項

addShutdownHook()は、すべての終了状況で呼び出されるわけではありません。強制終了も含めて重要な処理を保護するには、ファイルのフラッシュ、外部トランザクションの終了処理、ロックの解放などをフックだけに依存せず、可能な時点で明示的に実行してください。

arch

ホストマシンのOSアーキテクチャを識別する文字列です。 一般的な値はamd64aarch64です。

使用例
1
2
const process = require('process');
console.println(process.arch);

argv

現在のプロセスに渡されたコマンドライン引数の配列です。

  • argv[0]: JSH実行ファイルの絶対パス
  • argv[1]: 実行中のスクリプト名(またはパス)
  • argv[2:]: スクリプトに渡された残りの引数
使用例
1
2
3
4
5
const process = require('process');
console.println('argv[0]:', process.argv[0]);
console.println('argv[1]:', process.argv[1]);
console.println('argv[2]:', process.argv[2]);
console.println('argv   :', process.argv);

chdir()

現在の作業ディレクトリを変更します。

pathが空文字列の場合、JSHは$HOMEとして解釈します。

構文
chdir(path)
使用例
1
2
3
4
const process = require('process');
console.println('before:', process.cwd());
process.chdir('/lib');
console.println('after :', process.cwd());

cpuUsage()

CPU使用量情報を返します。

現在の実装はプレースホルダーであり、両フィールドとも数値0を返します。

返されるフィールド
  • user
  • system
使用例
1
2
3
const process = require('process');
const cpu = process.cpuUsage();
console.println(typeof cpu.user, typeof cpu.system);

cwd()

現在の作業ディレクトリのパスを返します。

使用例
1
2
const process = require('process');
console.println(process.cwd());

exit()

現在のプロセスを終了します。codeを省略すると、既定値は0です。

構文
exit([code])
使用例
1
2
const process = require('process');
process.exit(-1);

which()

PATHからJavaScriptコマンドを検索し、解決したファイルパスを返します。

コマンドに.js拡張子がない場合は、自動的に追加します。

構文
which(command)
使用例
1
2
const process = require('process');
console.println(process.which('echo')); // 例: /sbin/echo.js

expand()

文字列内の$HOME${HOME}などの環境変数を展開します。

構文
expand(value)
使用例
1
2
3
const process = require('process');
console.println(process.expand('$HOME/file.txt'));
console.println(process.expand('${HOME}/../lib/file.txt'));

env

JSHランタイムの環境オブジェクトです。

使用例
1
2
const process = require('process');
console.println(process.env.get('HOME'));

exec()

JavaScriptコマンドファイルを実行し、終了コードを返します。

構文
exec(command, ...args)
使用例
1
2
3
4
const process = require('process');
const path = process.which('echo');
const code = process.exec(path, 'hello from exec');
console.println('exit code:', code);

execPath

ホストOS上の、現在のプロセスの実行ファイルの絶対パスです。

使用例
1
2
const process = require('process');
console.println(process.execPath);

execString()

文字列で渡したJavaScriptソースコードを実行し、終了コードを返します。

構文
execString(source, ...args)
使用例

hrtime()

高分解能の時刻タプル[seconds, nanoseconds]を返します。

以前のタプルを渡すと、その時点からの経過時間を返します。

構文
hrtime([previous])
使用例
1
2
3
4
const process = require('process');
const start = process.hrtime();
const diff = process.hrtime([start[0], start[1]]);
console.println(Array.isArray(diff), diff.length);

kill()

指定したプロセスIDに、実際のOSシグナルを送信します。

  • pidは正の整数である必要があります。
  • signalを省略すると、既定値はSIGTERMです。
  • 成功するとtrueを返します。
  • 失敗するとErrorオブジェクトを返します。
  • signalには、文字列の名前または数値のシグナル番号を指定できます。

文字列の名前は大文字と小文字を区別せず、SIG接頭辞を省略できます。

この別名のサポートは、process.kill()に適用されます。

例:

  • SIGTERM
  • term
  • sigint

数値シグナルは、現在以下の値に対応しています。

数値リテラル
0なし
1SIGHUP
2SIGINT
3SIGQUIT
6SIGABRT
9SIGKILL
10SIGUSR1
11SIGSEGV
12SIGUSR2
13SIGPIPE
14SIGALRM
15SIGTERM

signalの値0は、実際のシグナルを送信せずに、対象プロセスの存在と権限を確認するために使用できます。

Windowsのprocess.kill(pid, 'SIGINT')は、Unixのkill(2)のように実際のシグナルを直接送信する動作ではありません。 代わりに、対象のプロセスグループがSIGINTに近い割り込みとして認識できるよう、コンソール制御イベントの送信を試みます。 これはWindowsでNode.jsの割り込み動作にできるだけ近づけたものですが、ベストエフォートです。 対象はコンソールに接続したプロセスグループである必要があり、Windowsが制御イベントをルーティングできない場合は失敗します。

WindowsのSIGTERMSIGQUITSIGKILLは、Unixのように異なる実シグナルとしてではなく、終了要求として扱います。

構文
kill(pid[, signal])
使用例
1
2
3
4
const process = require('process');
console.println(process.kill(12345, 'SIGKILL'));
console.println(process.kill(12345, 'term'));
console.println(process.kill(12345, 15));
Windowsの割り込みの例
const process = require('process');
console.println(process.kill(12345, 'SIGINT'));

Windowsが制御イベントをルーティングできない場合、process.kill()Errorオブジェクトを返します。

プロセスの存在確認の例
1
2
const process = require('process');
console.println(process.kill(process.pid, 0));

memoryUsage()

メモリ使用量情報をオブジェクトで返します。

現在の実装はプレースホルダーであり、すべてのフィールドに数値0を返します。

返されるフィールド
  • rss
  • heapTotal
  • heapUsed
  • external
  • arrayBuffers
使用例
1
2
3
const process = require('process');
const mem = process.memoryUsage();
console.println(typeof mem.rss, typeof mem.heapUsed);

nextTick()

次のイベントループで実行するコールバックを予約します。

第1引数が関数でなければ、何もせずundefinedを返します。

構文
nextTick(callback, ...args)
使用例
1
2
3
const process = require('process');
console.println('main');
process.nextTick((a, b) => console.println('tick:', a, b), 'first', 'second');

now()

現在時刻をJavaScriptの日時オブジェクトで返します。

使用例
1
2
3
const process = require('process');
const now = process.now();
console.println(typeof now); // object

pid

現在のプロセスのIDです。 値は数値(Number)で、現在のプロセスIDを表します。

使用例
1
2
const process = require('process');
console.println(process.pid);

platform

ホストマシンのOSプラットフォームを識別する文字列です。 一般的な値は、windowslinuxdarwin(macOS)です。

使用例
1
2
const process = require('process');
console.println(process.platform);

ppid

親プロセスのIDです。 値は数値(Number)で、親プロセスのIDを表します。

使用例
1
2
const process = require('process');
console.println(process.ppid);

シグナルイベント

processは、EventEmitterのようにシグナルイベントを受信できます。

このドキュメントの時点では、以下のシグナル名に対応しています。

  • SIGHUP
  • SIGINT
  • SIGQUIT
  • SIGABRT
  • SIGKILL
  • SIGUSR1
  • SIGSEGV
  • SIGUSR2
  • SIGPIPE
  • SIGALRM
  • SIGTERM

シグナルイベントリスナーは、大文字と小文字を区別しません。 イベント名は、SIG接頭辞を含む形式にのみ対応しています。

たとえば、以下の名前は同じ動作になります。

  • SIGTERM
  • sigterm

termなどの接頭辞のない別名は、シグナルイベント名として扱いません。 この値は、通常のEventEmitterのイベント名として扱います。

リスナーを登録すると、JSHがそのOSシグナルをイベントとして渡します。 リスナーがなければ、OSの既定のシグナル動作に従います。

使用例
1
2
3
4
5
const process = require('process');

process.on('sigint', () => {
  console.println('caught SIGINT');
});
対応するリスナー登録の例
process.on('sigterm', handler);
process.once('SIGTERM', handler);
process.addListener('sigquit', handler);

stdin, stdout, stderr

stdinstdoutstderrのストリームです。

使用例
1
2
3
4
5
6
7
8
const process = require('process');
process.stdout.write('Enter text: ');
const text = process.stdin.readLine();
console.println('Your input:', text);

// 出力:
// Enter text: hello?
// Your input: hello?

title

現在のプログラムを識別する文字列です。

使用例
1
2
const process = require('process');
console.println(process.title);

uptime()

プロセスの稼働時間(秒)を数値で返します。

使用例
1
2
3
const process = require('process');
const up = process.uptime();
console.println('uptime >= 0:', up >= 0);

version

JSHランタイムのバージョンを識別する文字列です。

使用例
1
2
const process = require('process');
console.println(process.version);

versions

ランタイムの詳細なバージョン情報を提供するオブジェクトです。

  • versions.jsh: JSHランタイムのバージョン文字列
  • versions.go: Goランタイムのバージョン文字列
使用例
1
2
3
const process = require('process');
console.println('jsh:', process.versions.jsh);
console.println('go :', process.versions.go);

which()

PATHからJavaScriptコマンドを検索し、解決したファイルパスを返します。

コマンドに.js拡張子がない場合は、自動的に追加します。

構文
which(command)
使用例
1
2
const process = require('process');
console.println(process.which('echo')); // 例: /sbin/echo.js

dispatchEvent()

JSHイベントループから、イベントエミッターオブジェクトにイベントを配信します。

イベントのスケジュールに成功するとtrue、イベントループが終了済みの場合はfalseを返します。

構文
dispatchEvent(target, eventName, ...args)
使用例
1
2
3
4
const process = require('process');
process.on('hello', (msg) => console.println(msg));
const ok = process.dispatchEvent(process, 'hello', 'from dispatchEvent');
console.println('scheduled:', ok);

dumpStack()

デバッグ用に、指定した深さまで現在のJavaScript呼び出しスタックを出力します。

構文
dumpStack(depth)
使用例
1
2
3
4
5
const process = require('process');
function trace() {
  process.dumpStack(5);
}
trace();

expand()

文字列内の$HOME${HOME}などの環境変数を展開します。

構文
expand(value)
使用例
1
2
3
const process = require('process');
console.println(process.expand('$HOME/file.txt'));
console.println(process.expand('${HOME}/../lib/file.txt'));
最終更新日