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.