如何与来自Node.js进程的C ++程序inputstream进行交互?

我是Node.js的新手,但对C ++和Javascript并不陌生。 我将使用节点做一个C ++工具,但是我面临一个问题,当C ++程序调用std::cin ,我不知道如何将数据从节点进程发送到C ++进程。

看到这个代码(main.exe):

 int main() { int a, b, c; cout << "Enter 3 numbers: "; cin >> a >> b >> c; cout << "Total: " << (a + b + c) << endl; return 0; } 

在我的JavaScript代码中,我使用child_process.spawn来调用main.exe,我知道我可以使用事件'data'来获取消息"Enter 3 numbers: " ,但我怎么让节点自动inputabc终于完成main.exe了?

更新:

我的Javascript代码(我不知道哪个事件可以用来写数据,所以我使用'data'

 var spawn = require('child_process').spawn; var child = spawn('main.exe'); child.stdout.on('data', (data) => { console.log(data); child.stdout.end('12 34 56'); }); child.on('close', (code) => console.log('Exit code: ' + code)); 

两件事情,

  • 你的subprocess在cout << "Enter 3 numbers: ";之后不会刷新cout << "Enter 3 numbers: "; 所以data事件永远不会被触发。 ( 编辑:再次读你的问题,似乎数据事件被触发,在Windows下的缓冲机制可能会不同于我以前在Linux上的,我会留在这里,以防万一:)
  • 你需要写入到stdin而不是stdout的subprocess。

试试这个你的JavaScript代码:

 var spawn = require('child_process').spawn; var child = spawn('main.exe'); child.stdin.end('12 34 56'); child.stdout.on('data', (data) => { console.log(data); }); child.on('close', (code) => console.log('Exit code: ' + code));