如何与Node.js进程中的C++程序输入流进行交互
How to interact with a C++ program input stream from a Node.js process?
我是Node.js的新手,但我对C++和Javascript并不陌生。我打算用node制作一个C++工具,但我遇到了一个问题,当C++程序调用std::cin
时,我不知道如何将数据从node进程发送到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: "
,但我如何让节点自动进入a
、b
和c
,并最终完成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));
两件事,
- 您的子进程在
cout << "Enter 3 numbers: ";
之后不会刷新,因此data
事件永远不会被触发。(编辑:再次阅读您的问题,数据事件似乎被触发了。Windows下的缓冲机制可能与我在Linux上习惯的不同。不过,我将把它留在这里以防万一:) - 您需要为子进程写入
stdin
,而不是stdout
请尝试使用以下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));
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- keyup事件处理程序更改焦点不适用于快速键入
- 用程序搜索JQuery数据表中的文本
- Javascript:selenium Web驱动程序isDisplayed()不工作
- Canvas Html5绘图应用程序,移动画布会导致重大问题
- Emberjs应用程序加载在除Index之外的所有路由上
- ExtJS 5用程序点击actioncolumn gridview
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 如何从Java/scala调用js美化程序
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- angular 1.5应用程序中的导航栏
- YUI3 IO实用程序是否可以根据给定的内容类型标头值自动序列化数据
- 如何创建带有插槽的vue js组件预加载程序
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- 在Web应用程序中使用Highcharts javascript
- 递归使用 eval() 是检查程序执行的好方法吗?
- angularjs+rails应用程序中未显示模板
- 提示使用服务器端事件处理程序激活JavaScript