반응형
pthread로 프로그래밍 하던중 발견한 사실..
새로운 thread에서 inet_ntoa를 하여 리턴한 함수를 사용할 경우 segmentation fault가 발생한다..
void* thread_function(void *arg)
{
char *client_addr;
....
client_addr=inet_ntoa(from.sin_addr)
....
client_addr를 이용한 Operation..
....
}
이유인 즉슨 inet_ntoa에서 내부 버퍼를 리턴하는 함수를 연속적으로 사용 할 경우 문제가 발생 한다고 한다.
따라서 이것은
void* thread_function(void *arg)
{
char ipaddr[64]
....
sprintf(&ipaddr,"%s",inet_ntoa(from.sin_addr)
....
ipaddr를 이용한 Operation
....
}
으로 바꾸면 된다..
새로운 thread에서 inet_ntoa를 하여 리턴한 함수를 사용할 경우 segmentation fault가 발생한다..
void* thread_function(void *arg)
{
char *client_addr;
....
client_addr=inet_ntoa(from.sin_addr)
....
client_addr를 이용한 Operation..
....
}
이유인 즉슨 inet_ntoa에서 내부 버퍼를 리턴하는 함수를 연속적으로 사용 할 경우 문제가 발생 한다고 한다.
따라서 이것은
void* thread_function(void *arg)
{
char ipaddr[64]
....
sprintf(&ipaddr,"%s",inet_ntoa(from.sin_addr)
....
ipaddr를 이용한 Operation
....
}
으로 바꾸면 된다..
반응형