2012-11-05 29 views
28

Tôi đang cố gắng sinh ra một quy trình bên ngoài phantomjs bằng cách sử dụng nút child_process và sau đó gửi thông tin đến quy trình đó sau khi nó được khởi tạo, có khả thi không?Quy trình con Nodejs: ghi vào stdin từ một quá trình đã được khởi tạo

Tôi có đoạn mã sau:

var spawn = require('child_process').spawn, 
    child = spawn('phantomjs'); 

child.stdin.setEncoding = 'utf-8'; 
child.stdout.pipe(process.stdout); 

child.stdin.write("console.log('Hello from PhantomJS')"); 

Nhưng điều duy nhất tôi có trên stdout là dấu nhắc ban đầu cho phantomjs console.

phantomjs> 

Vì vậy, có vẻ như child.stdin.write không có hiệu lực.

Tôi không chắc chắn tôi có thể gửi thông tin bổ sung cho các hình ảnh ảo ban đầu không.

cảm ơn trước.

Trả lời

56

Bạn cần phải vượt qua cũng \n biểu tượng để có được công việc lệnh của bạn:

var spawn = require('child_process').spawn, 
    child = spawn('phantomjs'); 

child.stdin.setEncoding('utf-8'); 
child.stdout.pipe(process.stdout); 

child.stdin.write("console.log('Hello from PhantomJS')\n"); 

child.stdin.end(); /// this call seems necessary, at least with plain node.js executable 
+1

xuất sắc Vadim! cảm ơn rất nhiều, điều đó đã làm cho thủ thuật – zanona

+0

có nhưng tại sao? hoặc có thể là dấu chấm phẩy thay vì một dòng mới? –

+0

Tôi đã thêm child.stdin.end() gọi –

Các vấn đề liên quan