• nodejs调用cmd命令


    使用 child_process.exec 实现

    child_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是在执行完成后返回一个完整的buffer,通过返回的buffer去识别完成状态

      spawn在执行时会返回一个stdout和stderr流对象,为边执行边返回。在执行完成后会抛出close事件监听,并返回状态码,通过状态码可以知道子进程是否顺利执行

      

  • 相关阅读:
    bootstrap学习笔记之基础导航条 http://www.imooc.com/code/3111
    bootstrap学习笔记之导航条基础
    Bootstrap学习笔记之文本对齐风格
    leetcode------Find Peak Element
    leetcode------Search a 2D Matrix
    leetcode------Set Matrix Zeroes
    【python】enumerate函数
    leetcode------Gray Code
    leetcode------Letter Combinations of a Phone Number
    leetcode------Best Time to Buy and Sell Stock II
  • 原文地址:https://www.cnblogs.com/baby123/p/12067643.html
Copyright © 2020-2023  润新知