利用NodeJS的子进程(child_process)调用系统命令
2014-07-07 15:28
537 查看
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的结果是一样的。
来源:http://www.csser.com/board/4f3f516e38a5ebc97800050c
相关文章推荐
- 利用NodeJS的子进程(child_process)调用系统命令的方法分享
- 利用NodeJS的子进程(child_process)调用系统命令
- 利用NodeJS的子进程(child_process)调用系统命令的方法分享
- Windows下Node.js使用child_process模块调用系统命令的编码问题
- Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
- 关闭系统进程,以及如何调用cmd并执行命令
- nodejs调用脚本(python/shell)和系统命令
- C# WINForm 如何关闭系统进程,调用cmd并执行命令(隐藏CMD窗口) - 赤色火焰 - 京华志
- c#关闭系统进程以及如何调用cmd并执行命令开发者在线 Builder.com.cn 更新时间:2008-08-05作者:乔毅 来源:IT168
- Python模块之subprocess--使用Popen来调用系统命令
- child_process spawn 开辟子进程,执行终端命令,获取数据
- Java利用ImageMagick调用linux系统命令实现Ai或者PSD文件转化为jpg或者png文件
- 正确的调用系统命令——为Process.waitFor设置超时以及其他
- c#关闭系统进程以及如何调用cmd并执行命令
- [Android] 解析android framework下利用app_process来调用java写的命令及示例
- QT5删除隐藏目录+隐藏文件(使用Process::start函数调用系统命令,且等待到结束)
- JAVA调用系统命令或可执行程序--返回一个Runtime运行时对象,然后启动另外一个进程来执行命令
- 关闭系统进程,以及如何调用CMD并执行命令
- 解析android framework下利用app_process来调用java写的命令及示例
- 调用一个系统命令,并读取它的输出值(使用QProcess.readAll)