各言語には、それぞれ独自の利点があります。相互に組み合わせると、プログラムはより効率的に実行され、Nodejs は子プロセスを使用してシステム コマンドまたはファイルとドキュメントを呼び出します。 nodejs.org/api/child_process.html。NodeJS 子プロセスは、システムと対話するための重要なインターフェイスを提供します: 標準入力、標準出力、および標準エラー出力のインターフェイス。
NodeJS 子プロセスは、システムと対話するための重要なインターフェイスを提供します。
標準入力、標準出力、および標準エラー出力のインターフェイス
child.stdin は標準入力を取得します
child.stdout は標準出力を取得します
child.stderr は標準エラー出力を取得します
子プロセスの PID を取得します: child.pid
子プロセスを生成するメソッドを提供します: child_process.spawn(cmd, args=[], [options])
システムコマンドを直接実行するメソッドを提供します: child_process.exec(cmd, [options], callback)
スクリプト ファイルを呼び出すためのメソッドを提供します: child_process.execFile(file, [args], [options], [callback])
プロセスを強制終了するメソッドを提供します: child.kill(signal='SIGTERM')
例を使って感じてみましょう。とても興味深いですね、笑~~
1. 子プロセスを使用してシステムコマンドを呼び出す (システムメモリ使用量を取得する)
次のコードを使用して、cmd_spawn.js という名前の新しい nodejs ファイルを作成します。
free.stdout.on('data', function (data) {
console.log('標準出力:n' データ);
});
// 標準エラー出力をキャプチャし、コンソールに出力します
console.log('標準エラー出力:n' データ);
});
//子プロセスのシャットダウンイベントを登録します
free.on('exit', function (コード, シグナル) {
以下は、このスクリプトを実行した結果とコマンド 'free -m' を直接実行した結果であり、まったく同じです:
2. システムコマンド (child_process.exec()) を実行します
私は今でもこれを頻繁に使用していますが、その機能は上記のものよりも少し強力だと感じます。たとえば、天気に注目したいのですが、天気インターフェースをカールして、データを JSON 形式で返す必要があるため、操作はせずに印刷します。
cmd_exec.js という名前の新しい nodejs ファイルを作成します:
コードをコピーします
3. パラメータを渡してシェル スクリプトを呼び出します (child_process.execFile())
これには、最初にシェル スクリプトを準備する必要があります。たとえば、サーバーに接続してパスワードを変更する場合は、IP、ユーザー、新しいパスワード、古いパスワードを指定して、新しいシェル スクリプト ファイルchange_passwordを作成する必要があります。 .sh:
コードをコピーIP=""
名前=""
パスワード=""
NEWPASSWORD=""
while getopts "H:U:P:N:" arg #オプションの後のコロンは、オプションにパラメーターが必要であることを示します
する
case $arg in
は)
IP=$OPTARG
;;
う)
名前=$OPTARG
;;
P)
PASSWORD=$OPTARG
;;
N)
NEWPASSWORD=$OPTARG
;;
?) #認識されないオプションがある場合、引数は?
echo "不明なパラメータが含まれています"
1番出口
;;
esac
完了
#最初にユーザー ID を取得します
USERID=`/usr/bin/ipmitool -I lanplus -H $IP -U $NAME -P $PASSWORD ユーザー リスト | awk '{print $1}'`
# エコー $USERID
#ユーザーIDに基づいてパスワードを変更
/usr/bin/ipmitool -I lanplus -H $IP -U $NAME -P $PASSWORD ユーザー設定パスワード $USERID $NEWPASSWORD
次に、このシェル スクリプトを呼び出すための file_changepwd.js という Nodejs ファイルを準備します。
callback(err, stdout, stderr);
});
上記を読んだ後、実際には Python スクリプトを呼び出すことに何の不安もありません。本質的には、コマンドを実行することです。
4. Python スクリプトを呼び出します (Python スクリプト自体がパラメーターを渡します)
ここで余談を挿入します。次の段落は、Python で渡されるパラメーターの簡単な説明です。
実行結果:
この Python スクリプトを呼び出すための nodejs ファイルも準備します (py_test.py に変更を加えました。以下を参照)、file_python.js:
py_test.py の内容は次のとおりです:
# -*-coding:utf-8 -*-
インポートシステム
print sys.argv
実行結果は次のとおりです:
相変わらずとても良くて、2014年も素晴らしいブログが完成しました。はぁ~~