zoukankan      html  css  js  c++  java
  • 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事件监听,并返回状态码,通过状态码可以知道子进程是否顺利执行

      

  • 相关阅读:
    hdu 4825 Xor Sum(01字典树模版题)
    poj 2778 DNA Sequence(ac自动机+矩阵快速幂)
    codeforces 626 G. Raffles(线段树+思维+贪心)
    hdu 2615 Division(暴力)
    hdu 6092 Rikka with Subset(多重背包)
    codeforces 688 E. The Values You Can Make(01背包+思维)
    JavaUtil smtp 邮件发送
    JavaUtil 处理Base64的图片上传
    Centos7 在apache+php7环境下 安装 Discuz!X3.4
    Centos7 安装 apache + php7.0 环境
  • 原文地址:https://www.cnblogs.com/baby123/p/12067643.html
Copyright © 2011-2022 走看看