2013-08-13 2 views
4

내 프로그램에서 poll() 함수를 사용하고 있는데, 플래그를 사용하려면 this link을 읽고 모든 헤더 파일을 포함하기 전에 _GNU_SOURCE을 정의해야합니다. 소켓을 폴링하면 클라이언트가 끊었는지 여부를 알 수 있도록이 플래그가 필요하므로 해당 스레드를 종료 할 수 있습니다.poll() 함수에서 POLLRDHUP 이벤트 플래그를 사용하기 전에 _GNU_SOURCE 매크로를 정의해야하는 이유는 무엇입니까?

여러 클라이언트를 동시에 처리 할 수있는 'echo'서버용 C 프로그램을 작성 중이며 OpenSUSE Linux Enterprise Server 10.3 (x86_64)에서 GCC 4.1.2를 사용하고 있습니다.

답변

7

POLLRDHUP은 비표준 확장입니다 (missing from POSIX). 네임 스페이스 오염을 방지하기 위해 비표준 확장은 명시 적으로 요청하지 않는 한 defining _GNU_SOURCE으로 표시되지 않습니다.

자세한 내용은 _GNU_SOURCE에 대한 자세한 내용은 이전 StackOverflow 답변 such as this one에서 찾을 수 있습니다.

+0

주어진 링크에서 대답과 '_GNU_SOURCE'에 대한 세부 정보를 보내 주셔서 감사합니다. –

+0

주어진 링크는'#define _GNU_SOURCE'를 "주석으로 선행 된"파일의 맨 처음에 만들 것을 권장합니다. " –

2

_GNU_SOURCE은 비표준 정의가 노출되지 않도록하여 휴대용 응용 프로그램을 만드는 데 유용한 기능 테스트 매크로입니다.