Sobes.tech
Junior — Middle

Ներկայացրեք, թե ինչ են սիգնալները Linux օպերացիոն համակարգում և ինչպես աշխատել դրանց հետ

sobes.tech AI

Պատասխան AI-ից

Linux- ում նշանները գործընթացների մասին ասինխրոն տեղեկացնող մեխանիզմ են (օրինակ, ընդհատում, երեխա գործընթացի ավարտ, ժամանակաչափ):

Հիմնական կետեր՝

  • Նշանները ունեն թվային նույնականացուցիչներ (օրինակ, SIGINT, SIGTERM):
  • Процессը կարող է մշակել նշանը նշանային handler-ով կամ անտեսել:
  • Եթե նշանը չի մշակվում, կիրառվում է նախնական գործողությունը (օրինակ, գործընթացի ավարտ):

C լեզվում SIGINT (Ctrl+C) նշանի մշակման օրինակ՝

#include <signal.h>
#include <stdio.h>
#include <unistd.h>

void handler(int signum) {
    printf("Սիգնալ %d ստացվեց, փակվում...\n", signum);
    _exit(0);
}

int main() {
    signal(SIGINT, handler);
    while(1) {
        printf("Աշխատում ենք...\n");
        sleep(1);
    }
    return 0;
}

Shell- ում նշաններ կարելի է ուղարկել kill հրամանի միջոցով՝ PID-ով, օրինակ՝ kill -SIGTERM 1234։