Sobes.tech
Middle

Uşaq prosesi başa çatarsa nə baş verəcək?

sobes.tech Süni İntellekt

AI-dan cavab

Valide proses exit hadisəsini qəbul edəcək. Əgər uşaq proses xətayla bitərsə, error hadisəsi də yaradılacaq və xəta obyekti ötürüləcək. Uşaq prosesinin standart giriş və çıxış axınları (stdout, stderr) bağlanacaq və valide proses bu hadisələri idarə etməlidir, resurs sızıntılarını qarşısını almaq üçün (məsələn, hadisə idarəedicilərini təmizləmək).

Bitirmə hadisəsinin nümunəsi:

const { spawn } = require('child_process');

const child = spawn('ls', ['-lh', '/usr']);

child.stdout.on('data', (data) => {
  console.log(`stdout: ${data}`);
});

child.stderr.on('data', (data) => {
  console.error(`stderr: ${data}`);
});

child.on('error', (err) => {
  // Prosesin başlaması və ya icrası zamanı xəta ilə işləmə
  console.error('Alt proses başlatmaq mümkün olmadı.', err);
});

child.on('exit', (code, signal) => {
  // Prosesin bitməsini idarə etmək
  if (code !== 0) {
    console.warn(`Uşaq prosesi ${code} kodu və ${signal} siqnalı ilə çıxdı`);
  } else {
    console.log(`Uşaq prosesi uğurla bitdi.`);
  }
});

Əgər valide proses exit hadisəsini dinləməzsə, o, öz icrasına davam edəcək. Əgər uşaq proses xətayla bitərsə və error hadisəsi idarə olunmazsa, idarə olunmamış istisna baş verəcək və ehtimal ki, valide proses sona çatacaq.

Həmçinin, əgər valide proses exit hadisəsini idarə etməzsə və əməliyyat sistemi uşaq prosesinin resurslarını düzgün təmizləyə bilməzsə, zombi proseslər yaranacaq. Bu, uşaq proses bitdikdə baş verir, lakin onun PID və bitmə vəziyyəti proseslər cədvəlində qalır və valide proses onun vəziyyətini "toplamaq" üçün gözləyir.