
posix_fpathconf 함수의 반환값이 항상 0이 아닌 경우 perror 함수가 에러 코드를 인식하지 못하는 이유는 perror 함수가 에러 코드를 인식할 수 있는 범위가 제한되어 있기 때문입니다. perror 함수는 시스템 콜의 에러 코드를 인식할 수 있는 범위가 0부터 71까지이며, POSIX 함수의 에러 코드는 0부터 255까지의 범위를 사용할 수 있습니다.
따라서 perror 함수가 POSIX 함수의 에러 코드를 인식하지 못하는 경우가 발생할 수 있습니다.
해결 방법은 perror 함수 대신에 strerror 함수를 사용하는 것입니다. strerror 함수는 POSIX 함수의 에러 코드를 인식할 수 있는 범위가 0부터 255까지이기 때문에 POSIX 함수의 에러 코드를 인식할 수 있습니다.
다음은 strerror 함수를 사용한 예제입니다.
#hostingforum.kr
c
#include
#include
#include
#include
int main() {
int fd = open("test.txt", O_RDONLY);
if (fd == -1) {
perror("open");
exit(1);
}
int ret = posix_fpathconf(fd, _PC_NAME_MAX);
if (ret == -1) {
fprintf(stderr, "posix_fpathconf error: %sn", strerror(errno));
exit(1);
}
printf("Name max : %dn", ret);
close(fd);
return 0;
}
위 코드에서 fprintf 함수를 사용하여 strerror 함수의 결과를 출력합니다. fprintf 함수는 stderr을 사용하여 에러 메시지를 출력합니다.
2025-06-11 19:52