我有这个程序(用C btw ...编码),我想从我的nodejs服务器中调用它。 我想将一个字符串传递给它的stdin,同时将它的stdout重定向/管道传输到文件中。
我知道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
//$ 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
有效(stdin中没有\ n)
答案 0 :(得分:2)
这对我有用......
我用于测试的脚本(名为flux)是:
#!/bin/bash
while read x ; do echo $x ; done
代码需要换行
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");