리눅스에서 c 프로그래밍 하고 있는데.. alarm과 sleep 때문에 미치겠네요.. 도와주세요.
지금 현재 제가 간단하게 겪고 있는 문제를 적어드리면
void alarm_handler( )
{
// 알람이 들어왔을 때 처리코드
ualarm( 500000,0 ); // 0.5초마다 다시 알람이 울릴 수 있도록 세팅.
}
void testcase( )
{
signal( SIGALRM,( void* )alarm_handler );
ualarm( 500000,0 ); // 알람 세팅하고.
while( cnt <3 )
{
printf( " i'm sleep..\n" );
sleep( 1 );
cnt++;
}
}
void main( )
{
testcase( );
}
이렇게 되구요. 지금 제가 구현하고 있는 프로그램에서 문제인 부분만 간략하게만 적었습니다.
위 코드에서 0.5초의 alarm을 세팅하고, while문에서 sleep(1)을 하면, 제 생각에는 sleep을 1초 시에 alarm이 2번 들어와야 된다고 생각을 하거든요.
근데 이게 alarm이 들어오면 이 sleep을 걸어준것 자체가 익스파이어 되고 있는 것 같습니다. 즉 alarm이 들어오면 sleep도 같이 풀려버리는 것 같아요.
sleep을 10000초를 걸어도 알람이 한번 들어오면 i'm sleep 이라는 문구가 출력이 되는 것도 확인하였습니다.
이게 알람 따로 돌고, sleep 따로 이렇게 돌아야되는데..ㅠㅠ 지금 이것 때문에 하루를 소비하고 있습니다.. 혹시 방법이 있을까요 ? 도와주세요ㅠㅠ
sleep(3) 함수는 시그널이 오면 깹니다.
sleep(3) 함수는 시그널이 오면 깹니다. 적당한 timer routine 을 만드심이..
그렇군요..
감사합니다.. 어떻게든 만들어 봐야겠네요..
댓글 달기