node.js:重定向stdin,(不同的)控制台应用程序的stdout

时间:2016-05-15 15:51:29

标签: node.js

我正在尝试为Unturned编写一个管理工具(它是一个僵尸生存游戏)。该游戏的服务器在终端中运行。我想以某种方式获得该控制台的实时输出,同时能够写入终端,以便我可以使用我在node.js中编写的管理工具来控制服务器。我试图谷歌/搜索解决方案,但我不完全确定要寻找什么。到目前为止,我用child_process尝试了不同的东西,但无济于事。这样的事情是否可能,何时是如此?

const spawn = require('child_process').spawn;
const proc = spawn("Unturned.exe", ["-batchmode", "-nographics", "+secureserver/servername", "", "", "", ]);

proc.stdout.on('data', (data) => {
  console.log(data);
});

proc.stderr.on('data', (data) => {
  console.log(data);
});

proc.on('exit', (code) => {
  console.log(`Child exited with code ${code}`);
});

和另一个。

const spawn = require('child_process').spawn;

const proc = spawn("Unturned.exe", ["-batchmode", "-nographics", "+secureserver/servername", "", "", "", ], { stdio: ['pipe', 'pipe', 'pipe'] });

proc.stdout.on('data', (data) => {
  console.log("stdout: "+data);
});

proc.stderr.on('data', (data) => {
  console.log("stderr: "+data);
});

proc.on('exit', (code) => {
  console.log(`Child exited with code ${code}`);
});

两者都不起作用(第一个没有输入/输出,第二个甚至没有成功启动服务器。)

提前致谢。

1 个答案:

答案 0 :(得分:0)

您确定Unturned.exe正在向stdoutstderr发送输出。你能这样做:Unturned.exe -batchmode -nographics +secureserver/servername >data.txt