[Linux] Linux의 Signal을 알아보자(3)
·
Linux
Signal (3)✅ Intro지난 시간까지 pending set과 block set에 대해 배웠다.이번 시간에는 sigaction, sigsuspend을 배워볼것이다.그리고 디몬과 시그널이 어떤 관계인지 설명할 예정이다.Sigaction특정 시그널에 대한 액션을 검사하거나 변경 가능하게 하는 시스템콜 함수이다.sigaction은 구조체이기 때문에 포인터를 사용해야한다.#include int sigaciton(int signo, struct sigaction* newact, struct sigaction* oldact); struct sigaction { void (*sa_handler)(int); void (*sa_sigaction)(in..
[Linux] Linux의 Signal을 알아보자(2)
·
Linux
Signal (2)⭐️ 표시가 들어있다면 중요한 개념, 없으면 그냥 이런게 있구나~ 느끼고 가시면 됩니다.✅ Intro저번 시간에는 signal이 무엇인지 알아봤다.마지막에 signal이 무시될 수도 있다고 말했고, signal 집합이 있다고 말했다.이번 시간은 signal 집합인 sigset_t를 알아볼 것이고, 이게 어떤 set들로 구성되어있는지 살펴볼것이다.특히 sigprocmask에서 정신을 잃을수 있으니 조심할것.⭐️sigset_t신호를 관리하기 위한 집합사용 예시sigset_t set;sigset(&set);sigset_t는 두가지로 이루어짐pending된 setblock된 set디폴트 값은 Pending set✅ block setblock : 시그널을 보내도 안받겠다차단된 신호는 즉시 처리되..
[Linux] Linux의 Signal을 알아보자 (1)
·
Linux
Signal✅ 개요프로세스 또는 시스템에게 이벤트 발생을 전달하는 신호를 말함.많은 부분이 비동기이지만 일부는 동기적임.동기 : 이벤트가 있어야 발생, 비동기 : 예측불가예) 사용자가 누르는것 (ctrl+c와 같이)divide zero는 인터럽트일수도 있고 시그널일수도 있음.🤿 정리시그널의 발생은 두가지로 나뉨. -> 비동기(예측불가), 동기(예측가능)시그널의 처리는 오로지 비동기임.😫 왜 쓸까?특정 이벤트가 발생했음을 알려주는 알림메세지의 기능을 하기 위해 쓴다.예를 들어 프로세스가 무한루프를 돌고 있는데 이걸 꺼야한다. → 그때 sigint를 보내서 강제 종료를 시켜버린다.특정 프로세스를 강제종료 시키고 싶다 → 터미널에 sigkill -9 {프로세스 이름}을 명령어로 입력해 강제 종료 시켜버린다..