0
当我尝试运行子进程并将其放入stdin某些文本时,它会引发错误。 这里是子进程的代码:Node.js child.stdin.write不起作用
import java.io.Console;
public class HelloWorld {
public static void main(String[] args) {
System.out.println("started");
Console console = System.console();
while (true) {
String s = console.readLine();
System.out.println("Your sentence:" + s);
}
}
}
脚本的代码,运行此程序:
var spawn = require('child_process').spawn;
var child = spawn('java', ['HelloWorld', 'HelloWorld.class']);
child.stdin.setEncoding('utf-8');
child.stdout.pipe(process.stdout);
child.stdin.write("tratata\n");
// child.stdin.end();
它抛出:
events.js:161
throw er; // Unhandled 'error' event
^
Error: read ECONNRESET
at exports._errnoException (util.js:1028:11)
at Pipe.onread (net.js:572:26)
通知,当我child.stdin取消注释行。结束();它只是结束任何内部消除反应
FWIW'child.stdin.setEncoding('utf-8');'不正确。 'setEncoding()'用于'Readable'流,但'child.stdin'用作'Writable'流。 – mscdex
此外,你是否尝试使用CRLF而不是LF作为行结尾(例如'child.stdin.write(“tratata \ r \ n”);')? – mscdex