inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

리눅스 시스템 프로그래밍 - 이론과 실습

sigprocmask에서 oldset에 대한 질문입니다

248

젓인

작성한 질문수 158

0

oldset에 동작이 어떻게 이뤄지는 지 궁금합니다

1. signal set, oldset을 초기화한 후

2. set에 SIGINT를 추가하고 block을 시키는데 여기서 oldset을 3번째 변수에 넣게되는데

이전에 시그널 proc이 없었기 때문에 oldset = NULL이라고 생각하면 될까요?

3. 그리고 oldset을 procmask에 등록을 시키면 이땐 아무 시그널도 block 되지 않는 것인가요?

 

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

int main(int argc, char **argv) {
    sigset_t set, oldset;

    sigemptyset(&oldset);
    sigemptyset(&set);

    sigaddset(&set, SIGINT);
    printf("SIGINT BLOCKING........\n");
    sigprocmask(SIG_BLOCK, &set, &oldset);
    sleep(3);

    printf("SIGSETMASK......\n");
    sigprocmask(SIG_SETMASK, &oldset, NULL);
    while(1) {
        sleep(1);
    }
    return 0;
}

 

linux

답변 1

0

런잇(ProgCoach4U)

네. 처음으로 sigprocmask()를 호출하셔서 받아온 oldset에는 블록하는 시그널이 설정되어 있지 않을 것입니다. 따라서 sigprocmask()에 oldset을 재설정 하시면 아무 시그널도 블록하지 않는 기본 상태가 됩니다. 잘 이해하고 계시네요 :)

inotify 객체에 등록된 watch descriptor 해제 관련 질문

0

37

2

select API 실습 코드 질문

0

41

2

wsl에서 fcntl사용

0

73

2

inotify_event 구조체 질문 [파일 이벤트 - 라이브 프로그래밍]에서...

0

180

2

./stat 파일이름

0

273

2

fopen r, r+모드 차이

0

460

2

강의를 모두 수강하고 스스로 구현하면 좋을 과제나 프로젝트 주제가 있을까요?

0

326

1

pthread 질문

0

419

2

I/O Multiplexing(select) 질문

0

325

1

inotify.c. ret 질문

0

302

1

inotify.c 질의합니다.

1

317

1

child process

0

715

1

read/blocking

0

565

1

flock

0

565

1

system call

0

598

1

pthread_create() 함수 이용했을 때, thread가 두번 호출되는 것 처럼 나타납니다. 왜 그런것인가요?

0

487

1

fork() 함수 사용시 결과 관련 질문

0

371

1

exec 관련 궁금한 사항

0

450

2

파일 디스크립터와 FILE 구조체에 대한 질문

0

552

1

buf 선언에 따른 read() fail 문제

0

251

2

파일 이벤트 - 라이브 프로그래밍 에서 캐스팅 질문

0

254

1

2번 multi thread 방법 질문

0

242

1

segmentation fault 발생 관련 문의

1

842

1

라이브 코딩 실습 코드

0

235

1