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 appnode-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 已经支持 linuxmac 了。

但是求高手来排查一下,mac 下没问题,linux 如果超时执行了,貌似掐掉子进程之后还是会出现僵尸——请看 test/index 第一个样例 ping


8 回复

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 模块来同步执行外部命令,并获取其输出。希望这对你的开发工作有所帮助!


哈哈,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


希望这段内容能够满足你的需求。如果有任何补充或修改意见,请随时告知。

回到顶部