요고 메인 부분에서 굵게 친 부분은 주석처리 해봐도 출력값은 같게나오는데
현재 mask값을 NULL로 하고 그걸 oldmask에 set해주니까 그런거지??
이 부분은 왜 넣은지 모르겠당.. 쓸데없는거같은데 예를 보여줄라고 넣은건가..
근데 show_mask() 요 함수에서 있잖아
sigset_t set; 으로 새로 정의를 해주구있는데
main 문에서 newmask에 SIGQUIT 값이 add 되어있으면
인자를 가져다 주지않은 상태에서
위에서 말한것처럼 sigset_t set 으로 새로 정의를 해줬는데도
거기에 현재 mask값이 들어있나봐..?
SIGQUIT <- 요값이 출력이 되는거보니까...
아어렵다.ㅇ..
void show_mask()
{
sigset_t set;
if( sigprocmask( 0, NULL, &set ) < 0 )
fprintf( stderr, "sigpromask error" );
if( sigismember( &set, SIGINT ) )
printf( "SIGINT" );
if( sigismember( &set, SIGQUIT ) )
printf( "SIGQUIT" );
if( sigismember( &set, SIGALRM) )
printf( "SIGALRM" );
if( sigismember( &set, SIGUSR1) )
printf( "SIGUSR1" );
printf( "\\n" );
}
==================================================================
int main()
{
sigset_t newmask, oldmask;
sigemptyset( &newmask );
sigaddset( &newmask, SIGQUIT );
if( sigprocmask( SIG_BLOCK, &newmask, &oldmask ) <0 )
fprintf( stderr, "sigprocmask error" );
show_mask();
//요부분
if( sigprocmask( SIG_SETMASK, &oldmask, NULL ) <0 )
fprintf( stderr, "sigprocmask error" );
show_mask();
return 0;
}
=================================================
#include <unistd.h>
#include <stdio.h>
#include <errno.h>
#include <signal.h>
#include <stdlib.h>
void show_mask()
{
sigset_t set;
if( sigprocmask( 0, NULL, &set ) < 0 )
fprintf( stderr, "sigpromask error" );
if( sigismember( &set, SIGINT ) )
printf( "SIGINT" );
if( sigismember( &set, SIGQUIT ) )
printf( "SIGQUIT" );
if( sigismember( &set, SIGALRM) )
printf( "SIGALRM" );
if( sigismember( &set, SIGUSR1) )
printf( "SIGUSR1" );
printf( "\\n" );
}
int main()
{
sigset_t newmask, oldmask;
sigemptyset( &newmask );
sigaddset( &newmask, SIGQUIT );
if( sigprocmask( SIG_BLOCK, &newmask, &oldmask ) <0 )
fprintf( stderr, "sigprocmask error" );
show_mask();
if( sigprocmask( SIG_SETMASK, &oldmask, NULL ) <0 )
fprintf( stderr, "sigprocmask error" );
show_mask();
return 0;
}
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.