利用NodeJS的子进程(child_process)调用系统命令的方法分享

 更新时间:2013年06月05日 12:52:59   投稿:mdxy-dxy  
child_process即子进程可以创建一个系统子进程并执行shell命令,在与系统层面的交互上挺有用处

NodeJS子进程简介 NodeJS子进程提供了与系统交互的重要接口,其主要API有: 标准输入、标准输出及标准错误输出的接口。

NodeJS子进程简介

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')

实例一:利用子进程获取系统内存使用情况

将以下代码保存为 free.js:

复制代码 代码如下:

var spawn = require('child_process').spawn,
free = spawn('free', ['-m']);

// 捕获标准输出并将其打印到控制台
free.stdout.on('data', function (data) {
console.log('标准输出:\n' + data);
});

// 捕获标准错误输出并将其打印到控制台
free.stderr.on('data', function (data) {
console.log('标准错误输出:\n' + data);
});

// 注册子进程关闭事件
free.on('exit', function (code, signal) {
console.log('子进程已退出,代码:' + code);
});


执行代码后的结果:

$ node free.js
标准输出:
total used free shared buffers cached
Mem: 3949 1974 1974 0 135 959
-/+ buffers/cache: 879 3070
Swap: 3905 0 3905

子进程已退出,代码:0
以上输出相当与在命令行执行:free -m 命令。

通过这个简单的例子我们已经对子进程的使用有所了解,下面再来一个示例,用于演示exec 的使用方法。

实例二:利用子进程统计系统登录次数

将下面代码保存为 last.js

复制代码 代码如下:

var exec = require('child_process').exec,
last = exec('last | wc -l');

last.stdout.on('data', function (data) {
console.log('标准输出:' + data);
});

last.on('exit', function (code) {
console.log('子进程已关闭,代码:' + code);
});

执行代码:

$ node last.js
标准输出:203

子进程已关闭,代码:0
其与直接在命令行输入:last | wc -l 的结果是一样的。

相关文章

  • JS中JSON.parse(JSON.stringify())实现深拷贝

    JS中JSON.parse(JSON.stringify())实现深拷贝

    深拷贝就是完全拷贝一份新的对象,本文主要介绍了JS中JSON.parse(JSON.stringify())实现深拷贝,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • Json对象与Json字符串互转(4种转换方式)

    Json对象与Json字符串互转(4种转换方式)

    Json字符与Json对象的相互转换方式有很多,接下来将为大家一一介绍下,感兴趣的朋友可以参考下哈,希望可以帮助到你
    2013-03-03
  • JSON取值前判断

    JSON取值前判断

    这篇文章主要介绍了JSON取值前判断,需要的朋友可以参考下
    2014-12-12
  • js解析与序列化json数据(二)序列化探讨

    js解析与序列化json数据(二)序列化探讨

    上一节我们讲解了JSON.stringify()的基本用法,这一节我们来重点探讨一下序列化,单独或组合使用这两个参数(过滤器/数组),可以更全面深入地控制JSON的序列化,感兴趣的朋友可以了解下,或许对你学习json有所帮助
    2013-02-02
  • json的前台操作和后台操作实现代码

    json的前台操作和后台操作实现代码

    通常情况下,json的在项目中的应用都是在后台把数据传到前台,然后前台再获取json中的数据.
    2012-01-01
  • JSONP跨域GET请求解决Ajax跨域访问问题

    JSONP跨域GET请求解决Ajax跨域访问问题

    本文主要是介绍了JSONP跨域是如何实现的,并探讨下JSONP跨域的原理。以及采用JSONP跨域GET请求解决Ajax跨域访问问题,需要的朋友可以参考下
    2014-12-12
  • ASP Json Parser修正版

    ASP Json Parser修正版

    之前因为要用json,在网上,json Generator就不少,但是,parser鲜有后来,在一个老外的启发下,写了一个praser,其实超简单,就是利用了JS的eval来parse,然后,把对象再返回给vbscript代码。
    2009-12-12
  • json解析大全 双引号、键值对不在一起的情况

    json解析大全 双引号、键值对不在一起的情况

    这篇文章主要介绍了json解析大全 双引号、键值对不在一起的情况,需要的朋友可以参考下
    2019-12-12
  • json编写简单一例

    json编写简单一例

    主要是了解一下json的简单写法与应用,方便想学习json的朋友
    2008-08-08
  • 任意Json转成无序列表的方法示例

    任意Json转成无序列表的方法示例

    这篇文章主要给大家介绍了任意Json如何转成无序列表,文中给出了详细的示例代码,相信对大家的理解和学习具有一定的参考借鉴价值,有需要的朋友们下面跟着小编来一起学习学习吧。
    2016-12-12

最新评论