
	                	                 
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