시그널 함수 호출시 인자값 전달 문제.
먼저 소스를 적습니다.
------------------------------------------------------------
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에도 전달해야 되는데
어떻게 값을 보내야 하나요. 구조체를 함수 밖에서 전역으로 선언이 아닌 인자를 넘기는 방법은 없을까요..
전역변수로 하나 설정하면 어떠신지 -_-
음 저도 그게 궁금했었는데 -_-
우선은 전역변수로 포인터 하나 잡아 놓고
그 변수를 통하면 쉽게 되겠네요 -_-
다른 좋은 방법이 있으려나..
다른 분이 답변해주세요 ^^
아 그리고 구조체 선언요..
구조체로 선언하는건..
http://database.sarang.net/study/c/unix_c/21.htm#3
여기를 참조해보세요
설명도 있고 예제도 있네요
그럼 ^^
비슷한 내용
시그널에 대한 비슷한 질문이 존재합니다.
http://bbs.kldp.org/viewtopic.php?t=1613&highlight=signal
우리 모두 리얼리스트가 되자. 그러나 가슴에 이룰 수 없는 꿈을 가지자
댓글 달기