iconv_open 서브루틴
용도
문자 코드 세트 변환기를 엽니다.
라이브러리
iconv 라이브러리libiconv.a
구문
설명
Iconv_open 서브루틴은 코드 세트 변환기를 초기화합니다. 코드 세트 변환기는 iconv 하위 루틴에서 한 코드 세트에서 다른 코드 세트로 문자를 변환하는 데 사용됩니다. Iconv_open 서브루틴은 FromCode 및 ToCode 매개변수로 지정된 문자 코드 집합 변환을 수행하는 변환기를 찾고, 해당 변환기를 초기화하며, 코드 집합 변환기를 식별하기 위해 iconv_t 유형의 변환 설명자를 반환합니다.
Iconv_open 서브루틴은 먼저 다음에 나오는 파일 이름 규칙에 따라 사용자가 제공한 두 개의 코드 집합 이름을 사용하여 LOCPATH 환경 변수에서 변환기를 검색합니다:
FromCode: "IBM-850"
ToCode: "ISO8859-1"
conversion file: "IBM-850_ISO8859-1"변환 파일 이름은 ToCode 코드 세트 이름과 FromCode 코드 세트 이름을 연결하고 그 사이에 _ (밑줄)를 넣어 구성합니다.
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 | FromCode 및 ToCode 매개 변수로 지정된 변환은 구현에서 지원되지 않습니다. |
| EMFILE | OPEN_MAX 구성 변수에 지정된 파일 기술자 수는 현재 호출 프로세스에서 열려 있는 파일 기술자의 수입니다. |
| ENFILE | 시스템에서 현재 열려 있는 파일이 너무 많습니다. |
| ENOMEM | 사용 가능한 저장 공간이 부족합니다. |
파일
| 항목 | 설명 |
|---|---|
| /usr/lib/nls/loc/iconv | 로드 가능한 메서드 변환기를 포함합니다. |
| /usr/lib/nls/loc/iconvTable | 단일 바이트 상태 비저장 코드 집합에 대한 변환 테이블이 포함되어 있습니다. |