Node.js এর মধ্যে থেকে কীভাবে কোনও বহিরাগত প্রোগ্রাম চালানো যায়?


137

Node.js এর মধ্যে থেকে কোনও বহিরাগত প্রোগ্রাম চালানো সম্ভব? পাইথনের সমকক্ষ os.system()বা কোনও লাইব্রেরি যা এই কার্যকারিতা যুক্ত করে?


আপনি child_processমডিউলটি ব্যবহার করতে চান । ডকুমেন্টেশনটি দেখুন , যা বিভিন্ন ব্যবহারের ক্ষেত্রে বিভিন্ন স্পষ্ট উদাহরণ সরবরাহ করে।
কেন রকোট

উত্তর:


140
var exec = require('child_process').exec;
exec('pwd', function callback(error, stdout, stderr){
    // result
});

2
শিশু প্রক্রিয়াটির ফলস্বরূপ অভিনয় করার সর্বোত্তম উপায় কী। উদাহরণ ... যদি প্রক্রিয়াটি একটি প্রস্থান কোড 0 ফেরত দেয় এবং আমি অন্য কোনও পদ্ধতিতে কল করতে চাই, তবে আমি মনে করি ত্রুটিগুলির আধিক্য।
ধারাবাহিকতা

@ কনটিনিয়াসকা - এই উত্তরটি 4 বছরের পুরানো। আপনার যদি সমস্যা হয় তবে দয়া করে এসও-তে একটি নতুন প্রশ্ন পোস্ট করুন এবং প্রয়োজনে এটিকে উল্লেখ করুন।
মার্ক কান

1
এই নিবন্ধটি ব্যবহার সম্পর্কে ভাল টিপস রয়েছে child_process
অ্যাড্রিয়ানো পি

@ জোওপিমেন্টেলফেরেরিরা - এই প্রশ্নটি 7 বছরের পুরনো। আপনার যদি সাহায্যের প্রয়োজন হয় তবে আমি একটি নতুন খোলার পরামর্শ দিচ্ছি
মার্ক কান কান

75

এক্সিকিউটে 512 কে বাফরের আকারের মেমরি সীমাবদ্ধতা রয়েছে। এক্ষেত্রে স্প্যান ব্যবহার করা ভাল। স্প্যানের সাথে একজন রান সময় চালিত কমান্ডের স্টাডাউট অ্যাক্সেস করতে পারে

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);
});

1
আমি এই কোড নিয়ে নিজেই উত্পন্ন হওয়া প্রক্রিয়ার আউটপুট দেখানোর জন্য ব্যর্থ stackoverflow.com/questions/21302350/...
পল Verest

1
@ পলভেরেস্ট: আপনার আউটপুটটি এর stderrচেয়ে বেশি হতে পারে stdout। আমার ক্ষেত্রে যদিও এটি closeকখনই আসবে না ...
হিপ্পিট্রেইল

1
স্টিডিন সম্পর্কে কি? প্রক্রিয়াতে ডেটা প্রেরণ করা কি সম্ভব?
হার্নান এচে

18

সবচেয়ে সহজ উপায়:

const {exec} = require("child_process")
exec('yourApp').unref()

"আপনার অ্যাপ্লিকেশন" অপেক্ষা না করে আপনার প্রক্রিয়াটি শেষ করতে অপরিশোধিত হওয়া প্রয়োজন

এখানে এক্সিকিউট ডকস রয়েছে


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.