从nodejs中执行文件,将stdin和pipe道stdout写入文件

我有这个程序(编码在C的btw …),我想从我的nodejs服务器内部调用它。 我想传递一个string到它的stdin,而redirect/pipe道它的标准输出到一个文件。

我知道process_child有一些方法来实现这种行为,所以我试过了:

program = child_process.execFile('program'); fileStream = fs.createWriteStream('file.txt'); program.stdout.pipe(fileStream); program.stdin.end('hello world!'); 

这行program.stdin.end("...")会引发一些错误。

它应该像echo "hellow world!" | ./program > file.txt echo "hellow world!" | ./program > file.txt

 //$ cat program.c #include <stdio.h> int main() { char aux[100]; scanf("%s", aux); printf("[%s]", aux); return 0; } 

更新:

使用'./program'而不是'program'解决了部分问题。

更新2

使用'hellow world!\r\n'或file.txt将只是空的。 但我的程序不读\ n,它使用%s读取。 据我所知,它会读直到\ n或EOF。 例如, echo -n "mimimi" | ./test echo -n "mimimi" | ./test作品(标准版中没有\ n)

       

网上收集的解决方案 "从nodejs中执行文件,将stdin和pipe道stdout写入文件"

它正在为我工​​作…

我用于testing的脚本(名为flux)是:

 #!/bin/bash while read x ; do echo $x ; done 

代码需要linebreaks

 var child_process = require('child_process'); var fs = require('fs'); program = child_process.execFile('./flux'); fileStream = fs.createWriteStream('file.txt'); program.stdout.pipe(fileStream); program.stdin.end("hello world!\r\n");