Node.js Child Process
Yazıda Node.js ile ek işlem başlatmak için kullanılan child process modülü ile ilgili bilgiler yer almaktadır.
Node.js Dersleri bölümündeki Node.js Senkron ve Asenkron İşlemler yazısında Node.js’in işlemleri senkron ve asenkron olarak çalıştırabileceğini söylemiştik.
Asenkron işlemler her ne kadar işlem performansını arttırsa da işlemciyi çokça kullanan video işleme, görüntü işleme, sayısal hesaplama gibi işlemler için ayrı bir işlemin başlatılması faydalı olabilir.
Ayrıca yazılan proje için gerekli olan çeşitli bilgileri (harici işlem ile kameradan fotoğraf çekme gibi ) diğer uygulamalardan elde edebiliriz.
Node.js çekirdek modülleri içerisinde yer alan child_process modülü konsol, ek veya alt işlem başlatılmasına imkan verir.
Node.js child_process modülü alt işlem başlatmak için üç farklı metoda sahiptir.
- exec – Kabuk/konsol işlemi başlatmak için kullanılır.
- spawn – Yazılan komutu yeni işlem başlatıp çalıştırır.
- fork – Alt işlem başlatmak için kullanılır.
exec
Komutu işletim sistemi kabuk/konsol yorumlayıcısında çalıştırır ve sonucu ara belleğe alır.
child_process.exec(command[, options][, callback])
Örnek kullanım aşağıda yer almaktadır.
'use strict';
const child_process = require('child_process');
const islem = child_process.exec('node --version', function (error, stdout, stderr) {
if (error) throw error;
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
});
islem.on('exit', function (code, signal) {
console.log('İşlem tamamlandı. İşlem kodu: ' + code);
});
spawn
Komutu yeni işlem üzerinden çalıştırmak için kullanılır.
child_process.spawn(command[, args][, options])
Örnek kullanım aşağıda yer almaktadır.
'use strict';
const child_process = require('child_process');
const islem = child_process.spawn('node', ['--version']);
islem.stdout.on('data', function (stdout) {
console.log('stdout: ' + stdout);
});
islem.stderr.on('data', function (stderr) {
console.log('stderr: ' + stderr);
});
islem.on('close', function (code) {
console.log('İşlem tamamlandı. İşlem kodu: ' + code);
});
fork
Metot spawn metodunun özel bir kullanımıdır.
Komut Node.js komutlarını çalıştırmak için alt işlem başlatır.
child_process.fork(modulePath[, args][, options])
Örnek kullanım aşağıda yer almaktadır.
Aşağıdaki kodları islem.js olarak kaydedin.
'use strict';
console.log('Merhaba Node.js');
process.send('Merhaba islem.js');
process.exit();
Aşağıdaki kodları islem.js ile aynı yere kaydedin ve çalıştırın.
'use strict';
const child_process = require('child_process');
const islem = child_process.fork('islem.js');
islem.on('message', function (message) {
console.log('Gelen mesaj: ' + message);
});
islem.on('close', function (code) {
console.log('İşlem tamamlandı. İşlem kodu: ' + code);
});
Node.js içerisindeki yer alan child_process modülü alt işlem oluşturmaya izin verse de kullanımı sırasında hatalı komut sonucu önlenemeyen hatalara neden olabilir.
Node.js Derslerine buradan ulaşabilirsiniz…
Hayırlı günler dilerim.