如何在nodejs中的单独线程上执行dos命令?

时间:2014-08-21 14:06:33

标签: javascript multithreading node.js npm dos

我正在使用

var version = shell.exec('D:\\prompt.bat', {silent:false}).output;

npm的Shelljs模块运行.bat文件

此.bat文件打开iexplore.exe并打开Internet Explorer

BUT  问题是它运行在单个线程上,所以直到IE除非IE关闭我的服务器是waitng而不处理任何进一步的请求,

所以任何人都可以建议我如何在单独的线程上运行DOS命令,这样它就不会影响我的服务器。

提前谢谢。 :)

2 个答案:

答案 0 :(得分:1)

您确实可以使用类似child_processexec之类的内容来创建异步进程,但在子进程完成或超时之前,node.js仍然不会退出。虽然它会继续执行。

示例(source):

var exec = require('exec');

exec(['D:\\prompt.bat'], function(err, out, code) {
  if (err instanceof Error)
    throw err;
  process.stderr.write(err);
  process.stdout.write(out);
  process.exit(code);
});

替代且更简单的方法:您可以尝试运行异步CMD代码,即解决不在Node.js但在脚本中的问题。

例如,将行更改为:

var version = shell.exec('start D:\\prompt.bat', {silent:false}).output;

或者您可以在start内添加命令prompt.bat

答案 1 :(得分:0)

我自己在评论中找到了第二个问题的答案:

代替c:\ ......使用c:/就是它。 :)