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։