시그널 함수 호출시 인자값 전달 문제.

pooshap의 이미지

먼저 소스를 적습니다.
------------------------------------------------------------
void alarm_handler(int); // 시그널 호출 함수 인자를 구조체로 선언을 어떻게 하는건지...

unsigned int pingtimeout_init(struct chat_client *client)
{
timeout_delay = atoi(DEFAULT_PING_TIMEOUT);

if(timeout_delay) {

signal(SIGALRM, alarm_handler);
alarm(timeout_delay);
}
return timeout_delay;
}

static void alarm_handler(int sig)
{
send_ping(struct chat_client *client); // 이부분을 위해서 구조체를 받아와야 합니다....

if(timeout_delay) {
signal(SIGALRM, alarm_handler);
alarm(timeout_delay);
}
}
------------------------------------------------------------
pingtimeout_init에서 받은 구조체를 alarm_handler에도 전달해야 되는데
어떻게 값을 보내야 하나요. 구조체를 함수 밖에서 전역으로 선언이 아닌 인자를 넘기는 방법은 없을까요..

urmajest의 이미지

음 저도 그게 궁금했었는데 -_-

우선은 전역변수로 포인터 하나 잡아 놓고

그 변수를 통하면 쉽게 되겠네요 -_-

다른 좋은 방법이 있으려나..

다른 분이 답변해주세요 ^^

urmajest의 이미지

구조체로 선언하는건..

http://database.sarang.net/study/c/unix_c/21.htm#3

여기를 참조해보세요

설명도 있고 예제도 있네요

그럼 ^^

stoneshim의 이미지

시그널에 대한 비슷한 질문이 존재합니다.

http://bbs.kldp.org/viewtopic.php?t=1613&highlight=signal

우리 모두 리얼리스트가 되자. 그러나 가슴에 이룰 수 없는 꿈을 가지자