sigsuspend관련 질문입니다.

SIGUSR1 에 대해서 프로세스는 기본동작이 terminate되지 않는것으로
알고있습니다만.
다음소스를 수행시키고
SIGUSR1 신호발생시키면
suspend가 해제되지 않고 가만있습니다.
#include
#include
#include
#include
int main()
{
static struct sigaction act , oact ;
sigset_t mask ;
int ret;
fprintf( stderr , "pid %d sid %d\n" , getpid() , getsid(0) );
sigemptyset( &mask );
sigaddset( &mask , SIGUSR1 );
fprintf( stderr , "now ...suspend \n" );
ret = sigsuspend( &mask );
if ( errno == EINTR )
fprintf( stderr , "sigsuspend ret is %d EINTR\n" , ret );
else
fprintf( stderr , "sigsuspend ret is %d \n" , ret );
fprintf( stderr , "now end ...\n" );
return 0;
}
------------수행결과입니다.
pid 8206 sid 7384
now ...suspend
----또다른 터미널창에서
kill -USR1 8206
했을경우 원래터미널창에서
아무일도 발생하지 않는군요.(위에 상태에서 진전없음)
sigsuspend가 풀리지 않는데...왜그런겁니까?
댓글 달기