我在electron程序中spawn了一个C语言程序作为子进程,我该如何与这个子进程通信?

才大难为用 2020-01-03 12:19:07
C语言的代码为:

#include <stdio.h>
int main(){
int i = 0;
scanf("%d", &i);
printf("%d\n", i);
scanf("%d", &i);
printf("%d\n", i);
return 0;
}

我用sub_process.stdin.write("1\n");后,它不会立即输出;
当我用两遍program_process.stdin.write("1\n");后,它会一股脑输出两个1;
但是我希望输入一次program_process.stdin.write("1\n");它的
sub_process.stdout.on('data', (data) => {console.log(data);});
就会输出一个1,就像程序逻辑那样,但现实并不是,你只有连续输入两个1之后,它会连续输出两个1,这应该是缓冲区刷新传送的问题,我不知道具体是怎么回事。

有人说这样做:

sub_process.stdin.cork();
sub_process.stdin.write("1\n");
sub_process.stdin.uncork();


但是我试了一下并不行,或者异步做:

sub_process.stdin.cork();
sub_process.stdin.write("1\n", function(){sub_process.stdin.uncork();});


这样反而连输出都不输出了。

被这个问题快整自闭了都。。。

...全文
179 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
测试狂人 2021-04-27
  • 打赏
  • 举报
回复
解决了吗?过了这么久没有结帖,别浪费啊!

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧