nodejs呼び出しcmdコマンド

4353 ワード

child_を使うprocess.exec実現
ちどり_processすなわちサブルーチンは、システムのサブルーチンを作成し、shellコマンドを実行することができ、システムレベルとのインタラクションにおいて非常に有用である.
NodeJSサブルーチンは、システムと対話する重要なインターフェースを提供しています.その主なAPIは、標準入力、標準出力、標準エラー出力のインターフェースがあります.
NodeJSサブプロセスは、システムと相互作用する重要なインターフェースを提供し、その主要なAPIは以下の通りである.
    、              
         child.stdin
         child.stdout 
           child.stderr 
      PID:child.pid
            :child_process.spawn(cmd, args=[], [options])
               :child_process.exec(cmd, [options], callback)
         :child.kill(signal='SIGTERM')
child_を使うprocessモジュールのステップ:
1.システムコマンドラインを呼び出す
2.サードパーティのソフトウェアを開く
3.サードパーティのソフトウェアを開いて、通信を実現する
例:
コマンド行のipconfigを呼び出して、システムに関するIP情報を取得します.
(1)execを使用する 
"use strict";

var exec = require("child_process").exec;

module.exports = function myTest() {

    return new Promise(function(resolve, reject) {

        var cmd = "ipconfig";
        exec(cmd,{
            maxBuffer: 1024 * 2000
        }, function(err, stdout, stderr) {
            if (err) {
                console.log(err);
                reject(err);
            } else if (stderr.lenght > 0) {
                reject(new Error(stderr.toString()));
            } else {
                console.log(stdout);
                resolve();
            }
        });
    });
};
(2)spawnを使用する
var spawn = require("child_process").spawn;
module.exports = function myTest() {
    return new Promise(function(resolve, reject) {
        var cmd = "ipconfig";
        var result = spawn('cmd.exe', ['/s', '/c', 'ipconfig']);
        result.on('close', function(code) {
            console.log('child process exited with code :' + code);
        });
        result.stdout.on('data', function(data) {
            console.log('stdout: ' + data);
        });
        result.stderr.on('data', function(data) {
            console.log('stderr: ' + data);
            reject(new Error(stderr.toString()));
        });
        resolve();

    });
};
説明:
 execは実行が完了した後に完全なブザーに戻り、戻りのブザーで完了状態を識別します.
spawnは実行時にstdoutとstderストリームオブジェクトを返し、実行しながら戻ります.実行が完了すると、closeイベントの傍受がスローされ、状態コードに戻り、サブプロセスが順調に実行されているかどうかを状態コードで知ることができます.