নোড.জেএস (v8.1.4) এর এমনকি আরও নতুন সংস্করণের জন্য, ইভেন্টগুলি এবং কলগুলি পুরানো সংস্করণগুলির মতো বা অনুরূপ, তবে এটি স্ট্যান্ডার্ড নতুন ভাষার বৈশিষ্ট্যগুলি ব্যবহার করতে উত্সাহিত করা হয়েছে। উদাহরণ:
বাফারড, অ-স্ট্রিম বিন্যাসিত আউটপুট (আপনি এটি একবারে পেয়ে যাবেন) এর জন্য ব্যবহার করুন child_process.exec:
const { exec } = require('child_process');
exec('cat *.js bad_file | wc -l', (err, stdout, stderr) => {
if (err) {
// node couldn't execute the command
return;
}
// the *entire* stdout and stderr (buffered)
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
});
আপনি এটি প্রতিশ্রুতি সহ ব্যবহার করতে পারেন:
const util = require('util');
const exec = util.promisify(require('child_process').exec);
async function ls() {
const { stdout, stderr } = await exec('ls');
console.log('stdout:', stdout);
console.log('stderr:', stderr);
}
ls();
আপনি যদি ধীরে ধীরে খণ্ডগুলি (স্ট্রিম হিসাবে আউটপুট) ডেটা পেতে চান তবে ব্যবহার করুন child_process.spawn:
const { spawn } = require('child_process');
const child = spawn('ls', ['-lh', '/usr']);
// use child.stdout.setEncoding('utf8'); if you want text chunks
child.stdout.on('data', (chunk) => {
// data from standard output is here as buffers
});
// since these are streams, you can pipe them elsewhere
child.stderr.pipe(dest);
child.on('close', (code) => {
console.log(`child process exited with code ${code}`);
});
এই উভয় ফাংশন একটি সিঙ্ক্রোনাস প্রতিরূপ আছে। উদাহরণস্বরূপ child_process.execSync:
const { execSync } = require('child_process');
// stderr is sent to stderr of parent process
// you can set options.stdio if you want it to go elsewhere
let stdout = execSync('ls');
পাশাপাশি child_process.spawnSync:
const { spawnSync} = require('child_process');
const child = spawnSync('ls', ['-lh', '/usr']);
console.log('error', child.error);
console.log('stdout ', child.stdout);
console.log('stderr ', child.stderr);
দ্রষ্টব্য: নীচের কোডটি এখনও কার্যকরী, তবে প্রাথমিকভাবে ES5 এবং এর আগে ব্যবহারকারীদের লক্ষ্যবস্তু।
Node.js সঙ্গে চাইল্ড প্রসেস ডিম ছাড়ার জন্য মডিউল ভাল নথিভুক্ত করা ডকুমেন্টেশন (v5.0.0)। একটি আদেশ কার্যকর করতে এবং বাফার হিসাবে এর সম্পূর্ণ আউটপুট আনতে, ব্যবহার করুন child_process.exec:
var exec = require('child_process').exec;
var cmd = 'prince -v builds/pdf/book.html -o builds/pdf/book.pdf';
exec(cmd, function(error, stdout, stderr) {
// command output is in stdout
});
আপনার যদি স্ট্রিম সহ হ্যান্ডেল প্রক্রিয়া I / O ব্যবহার করার প্রয়োজন হয় যেমন আপনি যখন প্রচুর পরিমাণে আউটপুট আশা করছেন, তখন ব্যবহার করুন child_process.spawn:
var spawn = require('child_process').spawn;
var child = spawn('prince', [
'-v', 'builds/pdf/book.html',
'-o', 'builds/pdf/book.pdf'
]);
child.stdout.on('data', function(chunk) {
// output will be here in chunks
});
// or if you want to send output elsewhere
child.stdout.pipe(dest);
আপনি যদি কোনও কমান্ডের পরিবর্তে কোনও ফাইল চালাচ্ছেন তবে আপনি child_process.execFileযে প্যারামিটারগুলির সাথে প্রায় একইরকম ব্যবহার করতে পারেন spawn, তবে চতুর্থ কলব্যাক প্যারামিটার রয়েছে execআউটপুট বাফার পুনরুদ্ধারের মতো । এটি দেখতে কিছুটা এ জাতীয় দেখাচ্ছে:
var execFile = require('child_process').execFile;
execFile(file, args, options, function(error, stdout, stderr) {
// command output is in stdout
});
V0.11.12 হিসাবে , নোড এখন সিঙ্ক্রোনাস spawnএবং সমর্থন করে exec। উপরে বর্ণিত সমস্ত পদ্ধতি হ'ল অবিচ্ছিন্ন, এবং একটি সংক্রামক সমমনা অংশ রয়েছে। তাদের জন্য ডকুমেন্টেশন এখানে পাওয়া যাবে । এগুলি স্ক্রিপ্টিংয়ের জন্য দরকারী হলেও নোট করুন যে শিশুদের প্রক্রিয়াগুলি অবিচ্ছিন্নভাবে উত্সাহিত করার জন্য ব্যবহৃত পদ্ধতিগুলির বিপরীতে সিঙ্ক্রোনাস পদ্ধতিগুলি উদাহরণ দেয় না ChildProcess।