2012-10-08 25 views
10

में तर्कों के साथ स्पॉन्गिंग प्रक्रिया node.js से मुझे एक बच्चे की प्रक्रिया को जन्म देने की आवश्यकता है, जबकि इसे ulimit का उपयोग करके इसे अधिक मेमोरी का उपयोग करने से रोकने के लिए।node.js

दस्तावेज़ों के बाद, मूल स्पॉन काम करना मुश्किल नहीं था: child = spawn("coffee", ["app.coffee"])

हालांकि, जो कुछ भी मैं नीचे करता हूं वह कर देता है कि चुपचाप चुपचाप मर जाता है।

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

यदि मैं ulimit -m 65536; coffee app.coffee चलाता हूं - यह इरादा के रूप में कार्य करता है।

मैं यहाँ क्या गलत कर रहा हूं?

+0

संभावित डुप्लिकेट (https://stackoverflow.com/questions/20643470/execute-a-command-line-binary-with-node-js) – iSkore

उत्तर

12

वे दो अलग-अलग आदेश हैं। यदि आप spawn का उपयोग कर रहे हैं तो उन्हें क्लब न करें। अलग बाल प्रक्रियाओं का प्रयोग करें।

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

आप उत्पादन धारा में रुचि रखते हैं (यदि आप सिर्फ उत्पादन बफ़र चाहते हैं) आप exec उपयोग कर सकते हैं नहीं कर रहे हैं।

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

child = exec('ulimit -m 65536; coffee app.coffee', 
    function (error, stdout, stderr) { 
    console.log('stdout: ' + stdout); 
    } 
}); 
की [Node.js साथ एक कमांड लाइन द्विआधारी निष्पादित]
+1

हाय vinayr। आपके पहले उदाहरण में, क्या 'ulimit' वास्तव में निम्नलिखित स्पॉन/बच्चे को प्रभावित करता है? – Industrial

+0

आदर्श रूप से यह चाहिए। क्या आपने परीक्षण किया? – vinayr

+0

खैर, मैंने एक बाल स्क्रिप्ट बनाई है जो यादृच्छिक डेटा के साथ एक विशाल सरणी बनाता है - 'प्रक्रिया.मेमरीयूज()। आरएसएस के अनुसार राम के 220 एमबी को खाकर आपके उदाहरण – Industrial

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^