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;
}

შელში ნიშანებს შეიძლება გაუგზავნოთ kill ბრძანების საშუალებით, PID-ის გამოყენებით, მაგალითად kill -SIGTERM 1234.