从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)
它正在为我工作…
我用于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");