Nodejs 一个同步执行可执行文件并返回输出到字符串的模块
Nodejs 一个同步执行可执行文件并返回输出到字符串的模块
模块叫 sync-runner
。<del>今天刚写的,要睡了也懒得换系统再写个,所以暂时只支持windows,不过其它系统也是要写的。</del>
大致就是可以这样:
var run = require("sync-runner");
var result = run("ping 127.0.0.1", 1000);
console.log(result);
不推荐将这个模块用于服务器,可以用于本地的 REPL 程序以及 native app
如 node-webkit 等。
比如要通过node来调用gcc编译器啊,然后再比如获取系统gcc版本啊,就可以用它方便地使用了:
var result = run("gcc --version");
安装很简单:
$ npm install sync-runner
github的repo在https://github.com/XadillaX/syncRunner
欢迎大家fork或者干嘛干嘛,也欢迎大家提交别的系统的同步函数-。 - 在我还没写之前。
或者找找bug什么的,谢谢啦 0. 0
新版本 0.0.5
已经支持 linux 和 mac 了。
但是求高手来排查一下,mac 下没问题,linux 如果超时执行了,貌似掐掉子进程之后还是会出现僵尸——请看 test/index
第一个样例 ping
。
Node.js 一个同步执行可执行文件并返回输出到字符串的模块
模块介绍
模块叫做 sync-runner
。该模块可以让你在 Node.js 中同步执行外部可执行文件,并将结果以字符串的形式返回。虽然该模块最初只支持 Windows,但后来已扩展支持 Linux 和 Mac。
使用示例
安装模块
你可以通过 npm 来安装这个模块:
$ npm install sync-runner
基本用法
以下是一个简单的示例,展示了如何使用 sync-runner
来执行一个命令并获取其输出:
const run = require("sync-runner");
// 执行 ping 命令,并设置超时时间为 1000 毫秒
let result = run("ping 127.0.0.1", 1000);
// 输出结果
console.log(result);
执行其他命令
你也可以使用这个模块来执行其他命令,例如获取系统中 GCC 的版本信息:
const run = require("sync-runner");
// 执行 gcc --version 命令
let result = run("gcc --version");
// 输出结果
console.log(result);
使用场景
这个模块适用于一些需要临时执行外部命令的场景,例如本地的 REPL 程序、桌面应用(如 node-webkit)等。由于这是一个同步操作,因此在服务器端使用时需谨慎,避免阻塞事件循环。
支持的操作系统
目前,sync-runner
已经支持 Windows、Linux 和 Mac。如果你发现任何问题,特别是在 Linux 系统下遇到僵尸进程的情况,请考虑提交 issue 或者 pull request 到 GitHub 仓库。
GitHub 仓库
该项目的 GitHub 仓库位于:https://github.com/XadillaX/syncRunner
欢迎大家 fork、提交 issue 或 pull request,帮助完善这个项目!
通过以上介绍,你应该能够理解如何使用 sync-runner
模块来同步执行外部命令,并获取其输出。希望这对你的开发工作有所帮助!
Node.js 0.12 将会支持 child_process.execSync()
http://strongloop.com/strongblog/whats-new-in-node-js-v0-12-execsync-a-synchronous-api-for-child-processes/
+1
哈哈,yield run
还是得考虑下用0.10的stable的人比如说我是吧-。 -
0.11目前还是unstable版本,虽然可以自己编译,但是用unstable总觉得怪怪的,强迫症使然。
-。 - 求实现linux版本,对于linux用C++实现这些操作还真不会,琢磨了一个下午的fork啊execlp之类的还是没搞出来。
这个的话得在命令里面加入 >
重定向才能从文本文件里面读取输出吧。
我这个是直接运行好之后结果已经在返回的字符串了。
举个简单的例子,我想获得系统 GCC
的版本,那我直接就可以
var version = runner.run("gcc --version");
根据你提供的信息,可以整理出关于“Node.js 同步执行可执行文件并返回输出到字符串”的帖子内容如下:
Node.js 同步执行可执行文件并返回输出到字符串的模块
该模块名为 sync-runner
,可以在 Node.js 中同步执行外部程序,并获取其标准输出结果。
示例代码
// 引入 sync-runner 模块
var run = require('sync-runner');
// 执行 ping 命令,并设置超时时间为 1000 毫秒
var result = run('ping 127.0.0.1', 1000);
// 输出执行结果
console.log(result);
使用场景
该模块适用于本地 REPL 环境或桌面应用(如 node-webkit),而不推荐在服务器环境中使用。例如,你可以用它来调用系统工具(如 gcc 编译器)或获取版本信息:
// 获取 gcc 版本信息
var result = run('gcc --version');
console.log(result);
安装方法
可以通过 npm 安装此模块:
npm install sync-runner
支持平台
最新版本 (0.0.5
) 已支持 Linux 和 Mac 平台,但可能存在一些问题,特别是在 Linux 下执行超时后可能会产生僵尸进程。如果你遇到任何问题,欢迎提交 issue 或 PR 来帮助改进这个库。
GitHub 地址
该项目的 GitHub 地址为:syncRunner
希望这段内容能够满足你的需求。如果有任何补充或修改意见,请随时告知。