#include
void foo( int sig ) { alarm( 1 ); ... }
main() { signal( SIGALRM, foo ); alarm( 1 ); ... }
이 방법이 있긴 한데 해보니까 가끔씩 foo를 콜하지 않고 생략(?)하더군 요.
다른 프로그램이 많이 돌면 돌 수록 더 많이 생략하더라구요.
좋은 방법없을까요?
안녕하세요.. alarm() 말고 sleep()를 쓰시죠..
unsigned int sleep(unsigned int seconds)
man 3번 섹션을 보시면 나와 있네요.
yootiong wrote.. #include <signal.h> void foo( int sig ) { alarm( 1 ); ... } main() { signal( SIGALRM, foo ); alarm( 1 ); ... } 이 방법이 있긴 한데 해보니까 가끔씩 foo를 콜하지 않고 생략(?)하더군 요. 다른 프로그램이 많이 돌면 돌 수록 더 많이 생략하더라구요. 좋은 방법없을까요?
죄송하지만 전혀 이해가 안가는 데요.
어떻게 sleep함수로 1초에 한 번씩 특정함수를 호출할 수 있죠?
while( 1 ) { sleep( 1 ); func(); }
이런 방법은 아닐 텐데요.
func함수도 수행되는 시간이 있기 때문에 정확하게 1초가 될 수 없고 또 한 sleep하는 동안 아무 것도 할 수가 없는 데요...
sleep함수를 어떻게 써야 하죠?
-- 나는 언제나 하이파이브에 목마르다.( 유수영, 2002 ) http//myhome.hananet.net/~yootiong/
#include #include #include
void sigalrm( int sig ) { ... }
main() { struct itimerval ival, oval; struct sigaction si, so;
memset( &si, 0x00, sizeof( si ) ); memset( &so, 0x00, sizeof( so ) ); si.sa_handler = sigalrm; sigaction( SIGALRM, &si, &so );
memset( &ival, 0x00, sizeof( ival ) ); memset( &oval, 0x00, sizeof( oval ) );
ival.it_interval.tv_usec = 1000000; ival.it_value.tv_sec = 1; setitimer( ITIMER_REAL, &ival, &oval );
... }
목마르면 음료수 한잔 하세요..
음료수 없으면 물이라도 한잔......^,.^;;
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
Re: 1초에 한 번씩 특정 함수를 호출하는 방법없나요?
안녕하세요..
alarm()
말고 sleep()를 쓰시죠..
#include
unsigned int sleep(unsigned int seconds)
man 3번 섹션을 보시면 나와 있네요.
yootiong wrote..
#include <signal.h>
void foo( int sig )
{
alarm( 1 );
...
}
main()
{
signal( SIGALRM, foo );
alarm( 1 );
...
}
이 방법이 있긴 한데 해보니까 가끔씩 foo를 콜하지 않고 생략(?)하더군
요.
다른 프로그램이 많이 돌면 돌 수록 더 많이 생략하더라구요.
좋은 방법없을까요?
Re^2: 1초에 한 번씩 특정 함수를 호출하는 방법없나요?
죄송하지만 전혀 이해가 안가는 데요.
어떻게 sleep함수로 1초에 한 번씩 특정함수를 호출할 수 있죠?
while( 1 )
{
sleep( 1 );
func();
}
이런 방법은 아닐 텐데요.
func함수도 수행되는 시간이 있기 때문에 정확하게 1초가 될 수 없고 또
한 sleep하는 동안 아무 것도 할 수가 없는 데요...
sleep함수를 어떻게 써야 하죠?
--
나는 언제나 하이파이브에 목마르다.( 유수영, 2002 )
http//myhome.hananet.net/~yootiong/
자답 ㅡ.ㅡ;;
#include
#include
#include
void sigalrm( int sig )
{
...
}
main()
{
struct itimerval ival, oval;
struct sigaction si, so;
memset( &si, 0x00, sizeof( si ) );
memset( &so, 0x00, sizeof( so ) );
si.sa_handler = sigalrm;
sigaction( SIGALRM, &si, &so );
memset( &ival, 0x00, sizeof( ival ) );
memset( &oval, 0x00, sizeof( oval ) );
ival.it_interval.tv_usec = 1000000;
ival.it_value.tv_sec = 1;
setitimer( ITIMER_REAL, &ival, &oval );
...
}
--
나는 언제나 하이파이브에 목마르다.( 유수영, 2002 )
http//myhome.hananet.net/~yootiong/
Re^2: 자답 ㅡ.ㅡ;;
목마르면 음료수 한잔 하세요..
음료수 없으면 물이라도 한잔......^,.^;;
댓글 달기