[완료] Linux에서의 Error 발생시 확인.
글쓴이: zipsinworm / 작성시간: 월, 2007/04/23 - 9:55오전
프로그래밍을 하다 보면, 예를들어 소켓 프로그램을 만드는 도중에 여러가지 오류가 발생 할 수 있는 함수에
(네트워크가 끊긴다던지 아니면 잘못된 IP를 넣었다던지) 오류를 잡아 낼 수 있는 방법은 없을까요?
윈도우 처럼 한 프로세서 내에서 여러개의 쓰레드가 동작하며 에러 발생시 에러코드가 설정 되는데
GetLastError() 가 참조하는 변수는 쓰레드간 독립적으로 저장되고 엑세스 되는거 같습니다.
errno.h 에서 errno 전역 변수나 perror()를 쓰면 될 것 같은데 여기에 대해 자세하게 풀이한 문서를 찾아봐도 없네요
(내공이 딸려서 그런거 같습니다.T^T)
아니면 더 쉬운 방법으로 Linux에서 에러를 핸들링 하는 방법이 있는지 궁금합니다.
Forums:
errno 맨 페이지에
errno 맨 페이지에 각각의 오류번호에 대해서 상세하게 설명되어 있습니다.
런타임에서 디버깅하고 싶으면 strace 같은 시스템 콜 추적기를 사용하는 것도 좋습니다.
각각의 옵션은 strace 맨페이지를 참조하세요 =33
----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러
에러 메시지를 확인하고 싶으신 거라면
에러가 발생한 경우 어떤 에러가 발생한 것인지 알고 싶으시면
그냥 쉽게 errno를 프린트하시면됩니다.
printf("error : %d\n",errno);
이렇게 하시면 어떤 에러가 발생했는지 알 수 있으시죠.
단지 에러 번호만 나오기 때문에 man 페이지 등을 살펴보셔야합니다.
에러 설명이 나오게 하시려면
#include string.h
#include errno.h
이 두개를 인클루드해주시고
strerror(errno);
함수를 이용하시면됩니다.
printf("ERROR : %s\n",strerror(errno));
뭐 이런식으로요.
perror() 함수를 사용하셔도 에러가 출력되는데 이때는 에러를 출력할 standard i/o (stderr)가 설정되어있어야 합니다.
감사합니다.
printf를 쓸려고 했는데 그것보단 perror이 더 보기가 편하더군요.
답변 감사합니다. ^^
댓글 달기