Theo the docs cho child_process.spawn
tôi mong chờ để có thể chạy một quá trình con ở mặt trước và cho phép quá trình nút riêng của mình để thoát khỏi như vậy:Node.js: Làm thế nào để đẻ trứng con tách ra ở tiền cảnh và xuất cảnh
handoff-exec.js
:
'use strict';
var spawn = require('child_process').spawn;
// this console.log before the spawn seems to cause
// the child to exit immediately, but putting it
// afterwards seems to not affect it.
//console.log('hello');
var child = spawn(
'ping'
, [ '-c', '3', 'google.com' ]
, { detached: true, stdio: 'inherit' }
);
child.unref();
Thay vì nhìn thấy đầu ra của lệnh ping
, nó chỉ đơn giản là thoát ra mà không bất kỳ thông báo hoặc lỗi.
node handoff-exec.js
hello
echo $?
0
Vì vậy, ... có thể trong node.js (hoặc ở tất cả) để chạy một đứa trẻ ở nền trước khi thoát gốc không?
CẬP NHẬT: Tôi nhận thấy rằng việc xóa console.log('hello');
cho phép trẻ chạy, tuy nhiên, nó vẫn không vượt qua kiểm soát tiêu chuẩn trước cho trẻ.
Bản sao có thể có của [Làm cách nào để lắng nghe và sinh ra nhiều tiến trình con trong nodejs] (http://stackoverflow.com/questions/32358845/how-do-i-listen-and-spawn-multiple-child-process- in-nodejs) –
Không. Đó là về việc sử dụng một đóng trong JavaScript để nắm bắt các tham chiếu JS tới nhiều tiến trình con. Đây là về các tham chiếu quy trình và cho phép trẻ kiểm soát đầu vào tiêu chuẩn. – CoolAJ86
Đối với những gì nó có giá trị, tôi đã cố gắng chạy mã của bạn và nó đã làm việc như mong đợi cho tôi - quá trình nút đã thoát, và đầu ra lệnh ping được in ra. Đây là trên Mac OS và node.js v5.4.1. Nó không hoạt động nếu tôi uncomment console.log - mà tôi thấy rất lạ. –