Ocean_
꾸준한 프로그래밍
Ocean_
전체 방문자
오늘
어제
  • 분류 전체보기 (174)
    • About Me (4)
    • 우아한테크코스 (27)
    • C & LINUX (50)
    • Operating System (12)
    • Database (25)
    • Computer Vision (0)
    • Problem Solving (0)
      • Programmers (0)
      • BOJ (0)
    • 코코코딩공부 (44)
      • Spring (12)
      • JAVA (14)
      • 디자인 패턴 (4)
      • 책 읽기 (4)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • 우테코5기
  • OperatingSystem
  • 우아한테크코스
  • OS
  • Operating System
  • 운영체제
  • 1259
  • 우테코
  • SIGINT
  • 프로세스
  • 원시값 포장
  • 정규화
  • 인덱스
  • 자바
  • signal
  • 백준
  • 우아한테크코스5기
  • C
  • Spring
  • C++
  • 데이터 조작어
  • 트랜잭션
  • 리눅스
  • BOJ
  • 블랙잭
  • DB
  • 우아한형제들
  • 우테코 체스
  • Linux
  • bean

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Ocean_

꾸준한 프로그래밍

C / LINUX sigpending(2)
C & LINUX

C / LINUX sigpending(2)

2022. 5. 31. 17:08

함수 기능

팬딩 중이거나, 블록되었을 때 발생한 시그널 집합을 가져오는 시스템호출 함수

함수 원형

#include<signal.h>
int sigpending(sigset_t *set)

함수 파라메터

set

인자가 가리키는 곳에 호출한 프로세스에 시그널이 블록되어있으며 현재 팬딩 중인 시그널들의 집합을 저장한다.

함수 예제

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>

int main(void) {
	sigset_t pendingset;
	sigset_t sig_set;
	int count = 0;

	//sig_set을 1로 초기화
	sigfillset(&sig_set);
	//sig_set이 프로세스의 시그널 마스크가 됨
	sigprocmask(SIG_SETMASK, &sig_set, NULL);

	while(1) {
			printf("count: %d\n", count++);
		sleep(1);

		//유보 중인 시그널 집합을 찾음
		if(sigpending(&pendingset) == 0) {
			//SIGINT가 존재하는지 확인
			if(sigismember(&pendingset, SIGINT)) {
				printf("SIGINT 블록되어 대기 중. 무한 루프를 종료.\n");
				break;
			}
		}
	}

	exit(0);
}

함수 결과

 

리눅스시스템 프로그래밍 - 홍지만 저

교재 내에 있는 예제를 바탕으로 작성한 글 입니다.

'C & LINUX' 카테고리의 다른 글

C / LINUX 디몬 코딩 규칙 daemon  (0) 2022.06.01
C / LINUX sigprocmask(2)  (0) 2022.05.31
C / LINUX alarm(2)  (0) 2022.05.31
C / LINUX raise(3)  (0) 2022.05.31
C / LINUX signal(2)  (0) 2022.05.31
    'C & LINUX' 카테고리의 다른 글
    • C / LINUX 디몬 코딩 규칙 daemon
    • C / LINUX sigprocmask(2)
    • C / LINUX alarm(2)
    • C / LINUX raise(3)
    Ocean_
    Ocean_
    dongVeloper

    티스토리툴바