使用 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事件监听,并返回状态码,通过状态码可以知道子进程是否顺利执行

  

nodejs调用cmd命令的更多相关文章

  1. 使用node自动生成html并调用cmd命令提交代码到仓库

    生成html提交到git仓库 基于目前的express博客,写了一点代码,通过request模块来请求站点,将html保存到coding-pages目录,复制静态文件夹到coding-pages,最后 ...

  2. python调用cmd显示中文乱码及调用cmd命令

    os.system('dir') 解决方法加上 os.system('chcp 65001') ____________________________________________________ ...

  3. C语言调用Cmd命令以及执行系统软件

    C语言调用Cmd命令以及执行系统软件 http://blog.csdn.net/qq_16814591/article/details/43676377

  4. IE浏览器中使用js调用cmd命令行demo

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="C ...

  5. Python调用cmd命令

    常用的两种方式: 1.python的OS模块. OS模块调用CMD命令有两种方式:os.popen(),os.system(). 都是用当前进程来调用. os.system是无法获取返回值的.当运行结 ...

  6. 使用Nodejs在Windows上调用CMD命令

    要用nodejs执行cmd,需要引入一个包node-cmd npm install node-cmd var cmd=require('node-cmd'); cmd.get( 'notepad',/ ...

  7. C# 调用cmd命令行路径中带空格问题

    今天打包winform程序,程序中本身有一处需要调用cmd.exe,打包安装在C:\Program Files目录下,然后调用cmd的地方,就弹出了C:\Program不是内部或外部命令,也不是可运行 ...

  8. Java调用CMD命令

    java的Runtime.getRuntime().exec(commandStr)可以调用执行cmd指令. cmd /c dir 是执行完dir命令后关闭命令窗口. cmd /k dir 是执行完d ...

  9. Java调用cmd命令 打开一个站点

    使用Java程序打开一个站点 近期做了个东西使用SWT技术在一个client程序 须要升级时在提示升级 点击窗口上的一个连接 打开下载网页 花费了我非常长时间 用到了把它记录下来  怕是忘记,须要时能 ...

随机推荐

  1. DAX 第四篇:CALCULATE详解

    CALCULATE()函数是DAX中最复杂的函数,用于计算由指定过滤器修改的上下文中的表达式. CALCULATE(<expression>,<filter1>,<fil ...

  2. 2019-11-29-WPF-模拟触摸设备

    原文:2019-11-29-WPF-模拟触摸设备 title author date CreateTime categories WPF 模拟触摸设备 lindexi 2019-11-29 08:47 ...

  3. PHP MySQL数据分页

    SQL SELECT语句查询总是可能导致数千条记录.但是在一个页面上显示所有结果并不是一个好主意.因此,我们可以根据要求将此结果划分为多个页面.分页意味着在多个页面中显示您的查询结果,而不是仅将它们全 ...

  4. shell脚本实现自动化安装linux版本的loadrunner agent(centos6.8)

    #!/bin/bash #Centos6下安装LoadRunner负载机 #@author Agoly #@date #@source 高级测试技术交流圈: yum -y install expect ...

  5. java并发查询数据

    并发服务 package com.springboot_android.thread; import com.project_entity.bean.DeviceRecrodBean; import ...

  6. CPU体系结构(组成部分)

    在准备网络工程师考试,里面有些知识点是比较常考的.自己写这篇博客呢,当作是笔记吧,自己看一看也分享给大家一起学习. 这部分的内容就是讲CPU里面的组成结构以及各部分的功能. CPU的构成:CPU主要由 ...

  7. install和cp

    在Makefile里会用到install,其他地方会用cp命令 主要区别: 如果目标文件存在,cp会先清空文件后往里写入新文件,而install则会先删除掉原先的文件然后写入新文件.这是因为往正在 使 ...

  8. pushad与popad

    版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明.2019-08-24,00:40:12作者By-----溺心与沉浮----博客园 PUSHAD与POPAD 这两条指令其实就是讲EAX,E ...

  9. python学习2-数据库配置操作

    1.创建实体类models-自定义数据库的字段与名称 class Register (models.Model): idCard=models.CharField(max_length=18) pwd ...

  10. linux ptrace I【转】

    转自:https://www.cnblogs.com/mmmmar/p/6040325.html 这几天通过<游戏安全——手游安全技术入门这本书>了解到linux系统中ptrace()这个 ...