เป็นไปได้หรือไม่ที่จะรันโปรแกรมภายนอกจากภายใน node.js? มีเทียบเท่ากับ Python os.system()
หรือห้องสมุดใด ๆ ที่เพิ่มฟังก์ชันนี้หรือไม่?
เป็นไปได้หรือไม่ที่จะรันโปรแกรมภายนอกจากภายใน node.js? มีเทียบเท่ากับ Python os.system()
หรือห้องสมุดใด ๆ ที่เพิ่มฟังก์ชันนี้หรือไม่?
คำตอบ:
var exec = require('child_process').exec;
exec('pwd', function callback(error, stdout, stderr){
// result
});
exec มีข้อ จำกัด หน่วยความจำของขนาดบัฟเฟอร์ 512k ในกรณีนี้มันจะดีกว่าที่จะใช้วางไข่ ด้วยการวางไข่หนึ่งมีการเข้าถึง stdout ของคำสั่งดำเนินการในเวลาทำงาน
var spawn = require('child_process').spawn;
var prc = spawn('java', ['-jar', '-Xmx512M', '-Dfile.encoding=utf8', 'script/importlistings.jar']);
//noinspection JSUnresolvedFunction
prc.stdout.setEncoding('utf8');
prc.stdout.on('data', function (data) {
var str = data.toString()
var lines = str.split(/(\r?\n)/g);
console.log(lines.join(""));
});
prc.on('close', function (code) {
console.log('process exit code ' + code);
});
stderr
stdout
ในกรณีของฉันแม้ว่าclose
จะไม่มา ...
วิธีที่ง่ายที่สุดคือ:
const {exec} = require("child_process")
exec('yourApp').unref()
unrefจำเป็นต้องจบกระบวนการของคุณโดยไม่รอ "yourApp"
นี่คือไฟล์เอกสาร exec
จากเอกสาร Node.js:
โหนดจัดให้มีสิ่งอำนวยความสะดวกแบบสามทิศทาง popen (3) ผ่านคลาส ChildProcess
child_process
โมดูล ดูเอกสารประกอบซึ่งมีตัวอย่างที่ชัดเจนของกรณีการใช้ที่หลากหลาย