iconv_open 서브루틴

용도

문자 코드 세트 변환기를 엽니다.

라이브러리

iconv 라이브러리libiconv.a

구문

#include <iconv.h>
iconv_t iconv_open ( ToCode FromCode)
const char *ToCode, *FromCode;

설명

Iconv_open 서브루틴은 코드 세트 변환기를 초기화합니다. 코드 세트 변환기는 iconv 하위 루틴에서 한 코드 세트에서 다른 코드 세트로 문자를 변환하는 데 사용됩니다. Iconv_open 서브루틴은 FromCodeToCode 매개변수로 지정된 문자 코드 집합 변환을 수행하는 변환기를 찾고, 해당 변환기를 초기화하며, 코드 집합 변환기를 식별하기 위해 iconv_t 유형의 변환 설명자를 반환합니다.

Iconv_open 서브루틴은 먼저 다음에 나오는 파일 이름 규칙에 따라 사용자가 제공한 두 개의 코드 집합 이름을 사용하여 LOCPATH 환경 변수에서 변환기를 검색합니다:

FromCode: "IBM-850"
ToCode: "ISO8859-1"
conversion file: "IBM-850_ISO8859-1"

변환 파일 이름은 ToCode 코드 세트 이름과 FromCode 코드 세트 이름을 연결하고 그 사이에 _ (밑줄)를 넣어 구성합니다.

LOCPATH 환경 변수에는 콜론으로 구분된 디렉토리 이름 목록이 포함되어 있습니다. LOCPATH 환경 변수의 시스템 기본값은 다음과 같습니다:
LOCPATH=/usr/lib/nls/loc

' LOCPATH ' 환경 변수에 대한 자세한 내용은 ' 글로벌라이제이션 가이드 및 참조 '의 ' 로캘 '을 참조하세요.

Iconv_open 서브루틴은 먼저 LOCPATH 환경 변수로 지정된 디렉토리(예: /usr/lib/nls/loc/iconv) 아래의 iconv 하위 디렉터리에서 지정된 변환기를 찾으려고 시도합니다. Iconv_open 서브루틴이 이러한 디렉토리에서 변환기를 찾을 수 없는 경우, LOCPATH 환경 변수로 지정된 디렉토리(예: /usr/lib/nls/loc/iconvTable) 아래의 iconvTable 하위 디렉터리에서 변환 테이블을 찾습니다.

Iconv_open 서브루틴이 이 두 위치에서 지정된 변환기를 찾을 수 없으면 호출 프로세스에(iconv_t) -1 반환하고 errno 전역 변수를 설정합니다.

iconvTable 디렉터리에는 genxlt 명령의 출력인 변환 테이블이 포함되어야 합니다. 변환 테이블은 단일 바이트 상태 비저장 코드 집합으로 제한됩니다.

명명된 변환기가 발견되면 iconv_open 하위 루틴이 로드 하위 루틴 작업을 수행하고 변환기를 초기화합니다. 변환기 설명자(iconv_t)가 반환됩니다.

참고: 프로세스가 실행 서브루틴 또는 포크 서브루틴을 호출하면 열린 변환기가 모두 버려집니다.

Iconv_open 서브루틴은 exec 서브루틴과 유사하며 변환기 프로그램의 런타임 연결을 효과적으로 수행하는 load 서브루틴을 사용하여 변환기 함수를 연결합니다. Iconv_open 서브루틴은 라이브러리 함수로 호출되므로 특정 프로그램에 대한 보안이 유지되도록 해야 합니다. 따라서 설정된 루트 ID 프로그램( --s-s-x 권한이 있는 프로그램)에서 iconv_open 서브루틴을 호출하면 LOCPATH 환경 변수를 무시하고 /usr/lib/nls/loc/iconv 디렉토리에서만 변환기를 검색합니다.

매개변수

항목 설명
ToCode 대상 코드 세트를 지정합니다.
FromCode 원본 코드 세트를 지정합니다.

리턴 값

성공하면 변환 설명자(iconv_t)가 반환됩니다. 그렇지 않으면 서브루틴이 -1 반환하고 errno 전역 변수가 오류를 나타내도록 설정됩니다.

오류 코드

항목 설명
EINVAL FromCodeToCode 매개 변수로 지정된 변환은 구현에서 지원되지 않습니다.
EMFILE OPEN_MAX 구성 변수에 지정된 파일 기술자 수는 현재 호출 프로세스에서 열려 있는 파일 기술자의 수입니다.
ENFILE 시스템에서 현재 열려 있는 파일이 너무 많습니다.
ENOMEM 사용 가능한 저장 공간이 부족합니다.

파일

항목 설명
/usr/lib/nls/loc/iconv 로드 가능한 메서드 변환기를 포함합니다.
/usr/lib/nls/loc/iconvTable 단일 바이트 상태 비저장 코드 집합에 대한 변환 테이블이 포함되어 있습니다.