Nodejs-process
Node.js-プロセス
プロセスオブジェクトはグローバルオブジェクトであり、どこからでもアクセスできます。 プロセスオブジェクトにはいくつかのメソッドがあります。
プロセスイベント
プロセスオブジェクトはEventEmitterのインスタンスであり、次のイベントを放出します-
Sr.No. | Event & Description |
---|---|
1 |
exit プロセスが終了するときに生成されます。 この時点でイベントループの終了を防ぐ方法はありません。すべての終了リスナーの実行が終了すると、プロセスは終了します。 |
2 |
beforeExit このイベントは、ノードがイベントループを空にし、スケジュールするものが他にない場合に発生します。 通常、スケジュールされた作業がないときにノードは終了しますが、「beforeExit」のリスナーは非同期呼び出しを行い、ノードを続行できます。 |
3 |
uncaughtException 例外がイベントループに戻ったときに発生します。 この例外に対してリスナーが追加された場合、デフォルトのアクション(スタックトレースを出力して終了する)は発生しません。 |
4 |
Signal Events プロセスがSIGINT、SIGHUPなどのシグナルを受信したときに生成されます。 |
例
*exit* イベントをリッスンするための次のコードでmain.jsという名前のjsファイルを作成します-
process.on('exit', function(code) {
//Following code will never execute.
setTimeout(function() {
console.log("This will not run");
}, 0);
console.log('About to exit with code:', code);
});
console.log("Program Ended");
次に、main.jsを実行して結果を確認します-
$ node main.js
出力を確認します。
Program Ended
About to exit with code: 0
終了コード
通常、ノードは、保留中の非同期操作がなくなると、ステータスコード0で終了します。 以下に説明されている他の終了コードがあります-
Code | Name & Description |
---|---|
1 |
Uncaught Fatal Exception キャッチされなかった例外があり、ドメインまたはuncaughtExceptionイベントハンドラーによって処理されませんでした。 |
2 |
Unused 組み込みの誤用のためにBashによって予約されています。 |
3 |
Internal JavaScript Parse Error Nodeのブートストラッププロセス内部のJavaScriptソースコードが解析エラーを引き起こしました。 これは非常にまれであり、通常はNode自体の開発中にのみ発生します。 |
4 |
Internal JavaScript Evaluation Failure Nodeのブートストラッププロセス内部のJavaScriptソースコードは、評価時に関数値を返すことができませんでした。 これは非常にまれであり、通常はNode自体の開発中にのみ発生します。 |
5 |
Fatal Error V8では致命的で回復不能なエラーが発生しました。 通常、メッセージは接頭辞FATAL ERRORとともにstderrに出力されます。 |
6 |
Non-function Internal Exception Handler キャッチされない例外がありましたが、内部の致命的な例外ハンドラー関数が何らかの形で非関数に設定されており、呼び出すことができませんでした。 |
7 |
Internal Exception Handler Run-Time Failure キャッチされなかった例外があり、内部の致命的な例外ハンドラー関数自体がエラーを処理しようとしてエラーをスローしました。 |
8 | *Unused * |
9 |
不明なオプションが指定されたか、値を必要とするオプションが値なしで提供されました。 |
10 |
Internal JavaScript Run-Time Failure Nodeのブートストラッププロセスの内部にあるJavaScriptソースコードは、ブートストラップ関数が呼び出されたときにエラーをスローしました。 これは非常にまれであり、通常はNode自体の開発中にのみ発生します。 |
11 |
Invalid Debug Argument --debugおよび/または—debug-brkオプションが設定されましたが、無効なポート番号が選択されました。 |
12 |
Signal Exits NodeがSIGKILLやSIGHUPなどの致命的なシグナルを受信した場合、その終了コードは128にシグナルコードの値を加えたものになります。 終了コードは7ビット整数であると定義されており、シグナル出口は高位ビットを設定し、シグナルコードの値を含むため、これはUnixの標準的な方法です。 |
プロセス特性
プロセスは、システムの相互作用をより適切に制御するための多くの有用なプロパティを提供します。
Sr.No. | Property & Description |
---|---|
1 |
stdout stdoutへの書き込み可能なストリーム。 |
2 |
stderr stderrへの書き込み可能なストリーム。 |
3 |
stdin stdinへの書き込み可能なストリーム。 |
4 |
argv コマンドライン引数を含む配列。 最初の要素は「ノード」で、2番目の要素はJavaScriptファイルの名前です。 次の要素は、追加のコマンドライン引数です。 |
5 |
execPath これは、プロセスを開始した実行可能ファイルの絶対パス名です。 |
6 |
execArgv これは、プロセスを開始した実行可能ファイルからのノード固有のコマンドラインオプションのセットです。 |
7 |
env ユーザー環境を含むオブジェクト。 |
8 |
exitCode プロセスが正常に終了するか、コードを指定せずにprocess.exit()を介して終了する場合の、プロセス終了コードとなる番号。 |
9 |
version NODE_VERSIONを公開するコンパイル済みプロパティ。 |
10 |
versions ノードのバージョン文字列とその依存関係を公開するプロパティ。 |
11 |
config 現在のノード実行可能ファイルをコンパイルするために使用された構成オプションのJavaScript表現を含むオブジェクト。 これは、。/configureスクリプトの実行時に作成された「config.gypi」ファイルと同じです。 |
12 |
pid プロセスのPID。 |
13 |
title 「ps」に表示されるものを設定するゲッター/セッター。 |
14 |
arch 実行しているプロセッサアーキテクチャ:「arm」、「ia32」、または「x64」。 |
15 |
platform 実行しているプラットフォーム:「darwin」、「freebsd」、「linux」、「sunos」または「win32」 |
16 |
mainModule require.mainを取得する別の方法。 違いは、実行時にメインモジュールが変更された場合、require.mainは、変更が発生する前に必要だったモジュール内の元のメインモジュールを引き続き参照する可能性があることです。 一般に、2つが同じモジュールを参照していると想定するのは安全です。 |
例
次のコードでmain.jsという名前のjsファイルを作成します-
//Printing to console
process.stdout.write("Hello World!" + "\n");
//Reading passed parameter
process.argv.forEach(function(val, index, array) {
console.log(index + ': ' + val);
});
//Getting executable path
console.log(process.execPath);
//Platform Information
console.log(process.platform);
次に、main.jsを実行して結果を確認します-
$ node main.js
Linuxマシンでプログラムを実行中に出力を確認します-
Hello World!
0: node
1:/web/com/1427106219_25089/main.js
/usr/bin/node
linux
メソッドリファレンス
プロセスは、システムの相互作用をより適切に制御するための多くの便利な方法を提供します。
Sr.No | Method & Description |
---|---|
1 |
abort() これにより、ノードは中止を発行します。 これにより、ノードが終了し、コアファイルが生成されます。 |
2 |
chdir(directory) プロセスの現在の作業ディレクトリを変更するか、失敗した場合は例外をスローします。 |
3 |
cwd() プロセスの現在の作業ディレクトリを返します。 |
4 |
exit([code]) 指定されたコードでプロセスを終了します。 省略すると、exitは「成功」コード0を使用します。 |
5 |
getgid() プロセスのグループIDを取得します。 これはグループ名ではなく、数値のグループIDです。この関数はPOSIXプラットフォームでのみ使用できます(つまり、 Windows、Androidではありません)。 |
6 |
setgid(id) プロセスのグループIDを設定します。 (setgid(2)を参照)。 数値IDまたはグループ名文字列のいずれかを受け入れます。 グループ名が指定されている場合、このメソッドは数値IDに解決する間ブロックします。この関数はPOSIXプラットフォーム(つまり、 Windows、Androidではありません)。 |
7 |
getuid() プロセスのユーザーIDを取得します。 これは数値のIDであり、ユーザー名ではありません。この関数はPOSIXプラットフォームでのみ使用可能です(つまり、 Windows、Androidではありません)。 |
8 |
setuid(id) プロセスのユーザーIDを設定します(setgid(2)を参照)。 数値IDまたはユーザー名文字列のいずれかを受け入れます。 ユーザー名が指定されている場合、このメソッドは数値IDに解決する間ブロックします。この関数はPOSIXプラットフォーム(つまり、 Windows、Androidではありません)。 |
9 |
getgroups() 補助グループIDを含む配列を返します。 有効なグループIDが含まれている場合、POSIXは未指定のままにしますが、node.jsは常に有効であることを保証します。 この関数はPOSIXプラットフォームでのみ使用可能です(つまり、 Windows、Androidではありません)。 |
10 |
setgroups(groups) 補助グループIDを設定します。 これは特権操作です。つまり、ルートにいるか、CAP_SETGID機能が必要です。 この関数はPOSIXプラットフォームでのみ使用可能です(つまり、 Windows、Androidではありません)。 |
11 |
initgroups(user, extra_group) /etc/groupを読み取り、ユーザーがメンバーになっているすべてのグループを使用して、グループアクセスリストを初期化します。 これは特権操作です。つまり、ルートにいるか、CAP_SETGID機能が必要です。 この関数はPOSIXプラットフォームでのみ使用可能です(つまり、 Windows、Androidではありません)。 |
12 |
kill(pid[, signal]) プロセスにシグナルを送信します。 pidはプロセスIDで、signalは送信するシグナルを説明する文字列です。 信号名は、「SIGINT」や「SIGHUP」などの文字列です。 省略すると、シグナルは「SIGTERM」になります。 |
13 |
memoryUsage() Nodeプロセスのメモリ使用量をバイト単位で記述したオブジェクトを返します。 |
14 |
nextTick(callback) 現在のイベントループターンが完了するまで実行したら、コールバック関数を呼び出します。 |
15 |
umask([mask]) プロセスのファイルモード作成マスクを設定または読み取ります。 子プロセスは、親プロセスからマスクを継承します。 mask引数が指定されている場合は古いマスクを返し、そうでない場合は現在のマスクを返します。 |
16 |
uptime() ノードが実行されている秒数。 |
17 |
hrtime() 現在の高解像度リアルタイムを[秒、ナノ秒]タプル配列で返します。 過去の任意の時間を基準にしています。 時刻とは関係がないため、クロックドリフトの影響を受けません。 主な用途は、インターバル間のパフォーマンスを測定することです。 |
例
次のコードでmain.jsという名前のjsファイルを作成します-
//Print the current directory
console.log('Current directory: ' + process.cwd());
//Print the process version
console.log('Current version: ' + process.version);
//Print the memory usage
console.log(process.memoryUsage());
次に、main.jsを実行して結果を確認します-
$ node main.js
Linuxマシンでプログラムを実行中に出力を確認します-
Current directory:/web/com/1427106219_25089
Current version: v0.10.33
{ rss: 11505664, heapTotal: 4083456, heapUsed: 2157704 }