2012-10-08 30 views
10

Tôi cần tạo ra một tiến trình con từ node.js, trong khi sử dụng ulimit để giữ cho nó không được sử dụng nhiều bộ nhớ.Quy trình sinh sản với các đối số trong node.js

Làm theo các tài liệu, không khó để có được hoạt động sinh sản cơ bản: child = spawn("coffee", ["app.coffee"]).

Tuy nhiên, làm những gì tôi làm dưới đây chỉ làm cho trứng đẻ chết lặng lẽ.

child = spawn("ulimit", ["-m 65536;", "coffee app.coffee"]) 

Nếu tôi chạy ulimit -m 65536; coffee app.coffee - nó hoạt động như có ý định.

Tôi đang làm gì sai ở đây?

+0

có thể trùng lặp của [Thực hiện một nhị phân dòng lệnh với Node.js] (https://stackoverflow.com/questions/20643470/execute-a-command-line-binary-with-node-js) – iSkore

Trả lời

12

Đó là hai lệnh khác nhau. Đừng đặt câu lạc bộ nếu bạn đang sử dụng spawn. Sử dụng các tiến trình con riêng biệt.

child1 = spawn('ulimit', ['-m', '65536']); 
child2 = spawn('coffee', ['app.coffee']); 

Nếu bạn không quan tâm đến luồng đầu ra (nếu bạn muốn sản lượng đệm) bạn có thể sử dụng exec.

var exec = require('child_process').exec, 
child; 

child = exec('ulimit -m 65536; coffee app.coffee', 
    function (error, stdout, stderr) { 
    console.log('stdout: ' + stdout); 
    } 
}); 
+1

Xin chào vinayr. Trong ví dụ đầu tiên của bạn, hiện tại 'ulimit' có thực sự ảnh hưởng đến đẻ trứng/con sau không? – Industrial

+0

Lý tưởng nhất là nó nên. Bạn đã kiểm tra? – vinayr

+0

Vâng, tôi đã tạo ra một kịch bản con tạo ra một mảng lớn với dữ liệu ngẫu nhiên - ăn lên 220mb ram theo 'process.memoryUsage(). Rss' bất kể ulimit được sử dụng như trong ví dụ của bạn – Industrial