node.js STDIN与process.stdin一起工作,而不是在pipe道

我正在使用require(“child_process”)。spawn和调用一个可执行文件,它在开始时暂停input密码; 如果我使用它如下所示:

var spawn = require("child_process").spawn; var exe = spawn("NameOfExe.exe", [/*arguments*/], {stdio: [process.stdin, process.stdout, process.stderr]}); 

它完美的作品(是的,我知道我可以inheritance,嘘:P)。 我可以input我的控制台,它会接受没有问题。

但是,如果我这样做:

 var spawn = require("child_process").spawn; var exe = spawn("NameOfExe.exe", [/*arguments*/], {stdio: ["pipe", process.stdout, process.stderr]}); exe.stdin.write("Password\n"); 

那么可执行文件甚至不会收到stdin; 它立即进入执行失败。

我完全不知所措。 有什么build议么?

编辑:

我想我可能会做点什么

所以我99.99%确定可执行文件使用C#和Console.ReadKey来获取密码。 但是,根据微软的说法,每当In属性被redirect到其他地方时,就会抛出一个exception。

所以这解释了它,但有没有解决这个使用Node的方法,还是我在谁做的这个可执行文件的人怜悯呢?

 The ReadKey method reads from the keyboard even if the standard input is redirected to a file with the SetIn method. 

你知道了 它使用本地绑定到硬件控制器/ HAL,而不是shell来处理stdio。