模块叫 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 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");