我在electron程序中spawn了一个C语言程序作为子进程,我该如何与这个子进程通信?
C语言的代码为:
我用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,这应该是缓冲区刷新传送的问题,我不知道具体是怎么回事。
有人说这样做:
但是我试了一下并不行,或者异步做:
这样反而连输出都不输出了。
被这个问题快整自闭了都。。。
#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();});
这样反而连输出都不输出了。
被这个问题快整自闭了都。。。
...全文
相关推荐
lua-spawn:用于生成程序的lua库
lua-spawn:用于生成程序的lua库
nodejs父子进程的stream方式通信.zip_cameraodl_nodejs 进程通信_nodejs父子进程通信_spa
父子进程使用管道通信,对于spawn方式创建的子进程,没有默认管道,所以需要使用此中方式,另外,通过nodejs创建出来的其他进程,比如java,c,都可以使用输入输出流来实现更复杂更安全的通信
lspawn:freebsd上用于lua的实验spawn {}功能
lspawn:freebsd上用于lua的实验spawn {}功能
Ruby-posixspawnRubys快速进程spawn基于posixspawn系统接口
posix-spawn - Rubys 快速进程::spawn基于posix_spawn() 系统接口
Python 创建子进程模块subprocess详解
最近,我们老大要我写一个守护者程序,对服务器进程进行守护。如果服务器不幸挂掉了,守护者能即时的重启应用程序。上网Google了一下,发现Python有很几个模块都可以创建进程。最终我选择使用subprocess模块,因为在Python手册中有这样一段话: This module intends to replace several other, older modules and functions, such as: os.system、os.spawn*、os.popen*、popen2.*、commands.* subprocess被用来替换一些老的模块和函数,如:os.syst


