Sobes.tech
Junior — Middle

İşletim sisteminde SIGCHLD sinyalinin ne anlama geldiğini açıklayabilir misiniz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Unix/Linux işletim sistemlerinde SIGCHLD sinyali, bir çocuk işlemi sona erdiğinde veya durumunu değiştirdiğinde (örneğin durduruldu veya yeniden başlatıldı) ebeveyn sürece gönderilir.

Ebeveyn, bu sinyali işleyerek çocuk işleminin tamamlandığını öğrenebilir ve ilgili kaynakları serbest bırakabilir (örneğin, wait() veya waitpid() çağırarak), böylece zombi süreçlerin oluşmasını önler.

C dilinde SIGCHLD işleme örneği:

#include <signal.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>

void sigchld_handler(int signo) {
    int status;
    while (waitpid(-1, &status, WNOHANG) > 0) {
        printf("Çocuk süreç sona erdi\n");
    }
}

int main() {
    signal(SIGCHLD, sigchld_handler);
    if (fork() == 0) {
        // çocuk süreç
        _exit(0);
    }
    // ebeveyn süreç
    pause(); // sinyalleri bekle
    return 0;
}

Bu şekilde, SIGCHLD çocuk süreçlerin yaşam döngüsünü etkin bir şekilde yönetmeye yardımcı olur.