Sigaction에 대하여

2022. 6. 25. 11:33·42서울/리눅스

Signal이란 뭘까

Signal은 소프트웨어 interrupt로 프로세스에게 뭔가 발생했다는것을 알려주는 간단한 메시지를 "비동기"적으로 보내는 것이다.

#include <signal.h>

int sigaction (int signum, const struct sigaction *act, struct sigaction *oldact);
// signum = 시그널 번호 (SIGINT, SIG_IGN, ...)
// act = 설치할 시그널 핸들러
// oldact = 새 핸들러 설치전 시그널 핸들러 백업 (불필요시 NULL)

Signal handler란 무엇인가?

시그널 처리를 위해 지정하는 함수 - 시그널을 받았을때 해당 함수를 호출한다.

s_sigaction.__sigaction_u.__sa_sigaction = &sig_handler;
s_sigaction.sa_flags = SA_SIGINFO;

main 문에서 실행될때를 가정할때 manual에서는
__sigaction_u.__sa_sigaction은 sa_sigaction로 define된다

다시 말해 위 코드는 각각 sig_handler라는 함수를 sigaction으로 지정해주고

sa_flags를 SA_SIGINFO로 지정해주는 역할을 한다.

 

이유는 sa_handler와 sa_sigaction은 메모리가 중첩되고,
sa_flags에 SA_SIGINFO가 설정 되어 있지 않으면 sa_handler에는 시그널을 처리할 동작을 지정하고, 

설정되어 있으면 sa_sigaction 멤버를 사용하기 때문에 위 코드에서는 SA_SIGINFO를 설정해두었고 
sa_sigaction 멤버를 사용하는 것이다. 


(정리하자면 핸들러가 하나가 아닌 3개의 인자를 취할때
sa_handler대신 sa_sigaction의 siginfo_t 구조체를 이용하기 위해 사용하는 플래그이다)

sigaction(SIGUSR1, &s_sigaction, NULL);
 

SIGUSR1 = 사용자 정의 시그널, kill을 통해서 Signal 전달

 

 

'42서울/리눅스' 카테고리의 다른 글
  • monitoring.sh 설정
  • UFW, SSH 설치
  • Linux 비밀번호 정책 설정
  • Sudoers 설정
Zi_Yoon
Zi_Yoon
머리 속에 정리하는 곳 <전자공학>
  • Zi_Yoon
    ZY_repo
    Zi_Yoon
  • 전체
    오늘
    어제
    • 분류 전체보기 (70)
      • HDLBits (25)
        • Verilog (19)
        • Circuits (4)
        • Verification (0)
      • IDEC 교육 (1)
        • Embedded C (13)
        • Verilog HDL (8)
      • Hardware (8)
        • RISC-V Project (1)
        • Computer Architecture (0)
        • AMBA (2)
        • FPGA (0)
        • 논문 읽기 (1)
        • ETC. (4)
      • 42서울 (13)
        • 리눅스 (12)
        • 네트워크 (1)
      • 생각 (1)
      • 취업 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    embedded
    charater
    axi
    c
    Keil
    IDEC
    보안 쉘
    비대칭 키
    AppArmor
    AMBA
    세션 키
    signal trap
    verilator
    vm
    fpga
    centos
    bit-wise and
    ssh
    pointer
    APT
    verilog
    QUARTUS
    fucntion
    research rabbit
    RISC-V
    debian
    ARM
    hdlbits
    AXI4
    lsblk
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
Zi_Yoon
Sigaction에 대하여
상단으로

티스토리툴바