신호 및 신호 처리

2965 단어 linuxLINUX
1. 신호 의 개념 신호 (signal) 는 소프트웨어 중단 으로 비동기 사건 을 처리 하 는 방법 을 제공 하고 시스템 자원 소모 가 가장 적은 프로 세 스 간 통신 방식 이다.리 눅 스에 서 모든 이상 퇴출 은 신호 때 문 입 니 다.셸 아래 kill 입력l 리 눅 스 시스템 이 지원 하 는 모든 신 호 를 표시 할 수 있 습 니 다.
2. 신호 의 출처: (1) 하드웨어 의 방식 으로 사용자 가 중간 에 일부 키 를 눌 렀 을 때, 예 를 들 어 Ctrl + c;하드웨어 이상 은 0, 잘못된 저장 공간 등 일부 신 호 를 발생 시 킵 니 다.(2) 소프트웨어 방식 프로 세 스 가 kill 또는 sigquue 함 수 를 호출 하여 알 람 이나 settime 에서 설정 한 타이머 가 시간 을 초과 할 때 SIGALRM 신 호 를 보 냅 니 다.
3. 신호 의 분류: 신뢰 할 수 있 는 신호 (실시 간 신호): 신호 33 ~ 64 번, 신 호 는 미결 신호 대기 열 에서 줄 을 서고 신 호 는 여러 번 신뢰 할 수 없 는 신 호 를 전달 할 수 있 습 니 다. 1 ~ 31 번: 줄 을 서 는 것 을 지원 하지 않 습 니 다.
4. 프로 세 스 가 신호 에 대한 응답: (1) 신호 캡 처 (2) 신 호 를 무시 합 니 다.(SIGKILL 과 SIGSTOP 신 호 를 무시 하거나 캡 처 하거나 차단 할 수 없 음 을 주의 하 십시오) (3) 시스템 기본 처리 (대부분의 기본 동작 은 종료)
5. 신호 처리: (1) signal (int signum, sigandler t handler);캡 처 (2) int sigaction (int signum, const struct sigaction * act, struct sigaction * oldact);신 호 를 받 을 때 프로 세 스 의 동작 을 검사 하거나 설정 합 니 다 (3) int pause (void).함 수 는 신호 가 잡 힐 때 까지 호출 프로 세 스 를 연결 합 니 다.(4)int kill(pid_t pid,int sig);프로 세 스 (5) int raise (int sig) 에 신 호 를 보 냅 니 다.호출 프로 세 스에 신호 보 내기 (6) sigqueue ();신호 보 내기 (7) alarm/getitimer/settimer 타이머 설정 (8) abort () 프로 세 스에 SIGABORT 신 호 를 보 내기
신호 에 대한 예:
#include
#include
#include

//     5S    SIGQUIT     KILL           1S  “”XXXDHR“
//       HELLO
void haha(int signum)
{
   printf("hello");
 }

void main()
{
   pid_t pid=1;
   //int signum=SIGQUIT;
   pid=fork();
   if(-1==pid)
   {
    return -1;

   }
   else if(0==pid)
   {
       signal(SIGQUIT,haha);
       while(1)
       {
       printf("LCDHR");
       sleep(1);
       printf(" ");
       }
       }

       else
       while(1)
       {
           printf("yuio");
           sleep(5);
           kill(pid,SIGQUIT);
           }
}

좋은 웹페이지 즐겨찾기