운영체제 인터페이스

운영체제 인터페이스

운영체제와 상호작용하는 술어들을 설명해요.

출처: GNU Prolog Manual - Operating system interface

본문

argument_counter/1

Templates

argument_counter(?integer)

Description argument_counter(Counter)는 Counter가 명령줄의 인자 수이면 성공해요. 첫 번째 인자는 항상 실행 중인 프로그램의 이름이므로 Counter는 항상 ≥ 1이에요. 최상위에서 검색되는 명령줄 인자에 대한 자세한 내용은 4.2절을 참조해요.

Errors

  • Counter가 변수도 정수도 아님 — type_error(integer, Counter)

Portability: GNU Prolog 술어.

argument_value/2

Templates

argument_value(+integer, ?atom)

Description argument_value(N, Arg)는 명령줄의 N번째 인자가 Arg와 통일하면 성공해요. 첫 번째 인자는 항상 실행 중인 프로그램의 이름이고 그 번호는 0이에요. 명령줄의 인자 수는 argument_counter/1(8.27.1절)로 얻을 수 있어요.

Errors

  • N이 변수 — instantiation_error
  • N이 변수도 정수도 아님 — type_error(integer, N)
  • N이 0보다 작은 정수 — domain_error(not_less_than_zero, N)
  • Arg가 변수도 원자도 아님 — type_error(atom, Arg)

Portability: GNU Prolog 술어.

argument_list/1

Templates

argument_list(?list)

Description argument_list(Args)는 Args가 첫 번째 인자(실행 중인 프로그램의 이름)를 제외한 명령줄의 각 인자와 연관된 원자들의 리스트와 통일하면 성공해요.

Errors

  • Args가 부분 리스트도 리스트도 아님 — type_error(list, Args)

Portability: GNU Prolog 술어.

environ/2

Templates

environ(?atom, ?atom)

Description environ(Name, Value)는 Name이 값이 Value인 환경 변수의 이름이면 성공해요. 이 술어는 백트래킹 시 재실행 가능해요.

Errors

  • Name이 변수도 원자도 아님 — type_error(atom, Name)
  • Value가 변수도 원자도 아님 — type_error(atom, Value)

Portability: GNU Prolog 술어.

make_directory/1, delete_directory/1, change_directory/1

Templates

make_directory(+atom)
delete_directory(+atom)
change_directory(+atom)

Description

  • make_directory(PathName) — 경로명이 PathName인 디렉토리를 생성.
  • delete_directory(PathName) — 경로명이 PathName인 디렉토리를 제거.
  • change_directory(PathName) — 현재 디렉토리를 경로명이 PathName인 디렉토리로 설정.

PathName의 구문에 대한 정보는 absolute_file_name/2(8.26.1절)를 참조해요.

Errors

  • PathName이 변수 — instantiation_error
  • PathName이 변수도 원자도 아님 — type_error(atom, PathName)
  • PathName이 원자이지만 유효한 경로명이 아님 — domain_error(os_path, PathName)
  • 운영체제 오류가 발생하고 os_error Prolog 플래그 값이 error(8.22.1절) — system_error(오류를 설명하는 원자)

Portability: GNU Prolog 술어.

working_directory/1

Templates

working_directory(?atom)

Description working_directory(PathName)은 PathName이 현재 디렉토리의 경로명이면 성공해요.

Errors

  • PathName이 변수도 원자도 아님 — type_error(atom, PathName)

Portability: GNU Prolog 술어.

directory_files/2

Templates

directory_files(+atom, ?list)

Description directory_files(PathName, Files)는 Files가 경로명이 PathName인 디렉토리의 모든 항목(파일, 하위 디렉토리 등)의 리스트이면 성공해요. PathName의 구문에 대한 정보는 absolute_file_name/2(8.26.1절)를 참조해요.

Errors

  • PathName이 변수 — instantiation_error
  • PathName이 변수도 원자도 아님 — type_error(atom, PathName)
  • PathName이 원자이지만 유효한 경로명이 아님 — domain_error(os_path, PathName)
  • Files가 부분 리스트도 리스트도 아님 — type_error(list, Files)
  • 운영체제 오류가 발생하고 os_error Prolog 플래그 값이 error(8.22.1절) — system_error(오류를 설명하는 원자)

Portability: GNU Prolog 술어.

rename_file/2

Templates

rename_file(+atom, +atom)

Description rename_file(PathName1, PathName2)는 경로명이 PathName1인 파일 또는 디렉토리를 PathName2로 이름을 바꿔요. PathName1과 PathName2의 구문에 대한 정보는 absolute_file_name/2(8.26.1절)를 참조해요.

Errors

  • PathName1이 변수 — instantiation_error
  • PathName1이 변수도 원자도 아님 — type_error(atom, PathName1)
  • PathName1이 원자이지만 유효한 경로명이 아님 — domain_error(os_path, PathName1)
  • PathName2가 변수 — instantiation_error
  • PathName2가 변수도 원자도 아님 — type_error(atom, PathName2)
  • PathName2가 원자이지만 유효한 경로명이 아님 — domain_error(os_path, PathName2)
  • 운영체제 오류가 발생하고 os_error Prolog 플래그 값이 error(8.22.1절) — system_error(오류를 설명하는 원자)

Portability: GNU Prolog 술어.

delete_file/1, unlink/1

Templates

delete_file(PathName)
unlink(PathName)

Description

  • delete_file(PathName) — 경로명이 PathName인 기존 파일을 제거.
  • unlink/1delete_file/1과 비슷하지만 시스템 오류를 일으키지 않음(예: PathName이 기존 파일을 가리키지 않아도).

PathName의 구문에 대한 정보는 absolute_file_name/2(8.26.1절)를 참조해요.

Errors

  • PathName이 변수 — instantiation_error
  • PathName이 변수도 원자도 아님 — type_error(atom, PathName)
  • PathName이 원자이지만 유효한 경로명이 아님 — domain_error(os_path, PathName)
  • 운영체제 오류가 발생하고 os_error Prolog 플래그 값이 error(8.22.1절) — system_error(오류를 설명하는 원자)

Portability: GNU Prolog 술어.

file_permission/2, file_exists/1

Templates

file_permission(+atom, +atom)
file_permission(+atom, +atom_list)
file_exists(+atom)

Description file_permission(PathName, Permission)은 PathName이 권한이 Permission을 포함하는 기존 파일(또는 디렉토리)의 경로명이면 성공해요.

파일 권한: Permission은 단일 권한이거나 권한 리스트일 수 있어요. 권한은 다음 중 하나의 원자예요:

  • read — 파일 또는 디렉토리를 읽을 수 있음.
  • write — 파일 또는 디렉토리를 쓸 수 있음.
  • execute — 파일을 실행할 수 있음.
  • search — 디렉토리를 검색할 수 있음.

PathName이 존재하지 않거나 그 권한이 Permission을 포함하지 않으면 이 술어는 실패해요.

file_exists(PathName)file_permission(PathName, [])과 동일해요. 즉 PathName이 기존 파일(또는 디렉토리)의 경로명이면 성공해요. PathName의 구문에 대한 정보는 absolute_file_name/2(8.26.1절)를 참조해요.

Errors

  • PathName이 변수 — instantiation_error
  • PathName이 변수도 원자도 아님 — type_error(atom, PathName)
  • PathName이 원자이지만 유효한 경로명이 아님 — domain_error(os_path, PathName)
  • Permission이 부분 리스트이거나 변수인 요소를 가진 리스트 — instantiation_error
  • Permission이 원자도 부분 리스트도 리스트도 아님 — type_error(list, Permission)
  • Permission 리스트의 어떤 요소 E가 변수도 원자도 아님 — type_error(atom, E)
  • Permission 리스트의 어떤 요소 E가 원자이지만 유효한 권한이 아님 — domain_error(os_file_permission, Permission)
  • 운영체제 오류가 발생하고 os_error Prolog 플래그 값이 error(8.22.1절) — system_error(오류를 설명하는 원자)

Portability: GNU Prolog 술어.

file_property/2

Templates

file_property(+atom, ?os_file_property)

Description file_property(PathName, Property)는 PathName이 기존 파일(또는 디렉토리)의 경로명이고 Property가 파일의 속성 중 하나와 통일하면 성공해요. 이 술어는 백트래킹 시 재실행 가능해요.

파일 속성:

  • absolute_file_name(File) — File이 PathName의 절대 파일 이름(8.26.1절).
  • real_file_name(File) — File이 PathName의 실제 파일 이름(심볼릭 링크를 따라감).
  • type(Type) — Type이 PathName의 유형. 가능한 값: regular, directory, fifo, socket, character_device, block_device, unknown.
  • size(Size) — Size가 PathName의 크기(바이트).
  • permission(Permission) — Permission이 PathName의 권한(8.27.10절).
  • last_modification(DT) — DT가 마지막 수정 날짜와 시간(8.27.14절).

PathName의 구문에 대한 정보는 absolute_file_name/2(8.26.1절)를 참조해요.

Errors

  • PathName이 변수 — instantiation_error
  • PathName이 변수도 원자도 아님 — type_error(atom, PathName)
  • PathName이 원자이지만 유효한 경로명이 아님 — domain_error(os_path, PathName)
  • Property가 변수도 파일 속성 항도 아님 — domain_error(os_file_property, Property)
  • Property = absolute_file_name(E), real_file_name(E), type(E) 또는 permission(E)이고 E가 변수도 원자도 아님 — type_error(atom, E)
  • Property = last_modification(DateTime)이고 DateTime이 변수도 복합 항도 아님 — type_error(compound, DateTime)
  • Property = last_modification(DateTime)이고 DateTime이 복합 항이지만 dt/6 구조가 아님 — domain_error(date_time, DateTime)
  • Property = size(E) 또는 last_modification(DateTime)이고 DateTime이 dt/6 구조지만 어떤 요소 E가 변수도 정수도 아님 — type_error(integer, E)
  • 운영체제 오류가 발생하고 os_error Prolog 플래그 값이 error(8.22.1절) — system_error(오류를 설명하는 원자)

Portability: GNU Prolog 술어.

temporary_name/2

Templates

temporary_name(+atom, ?atom)

Description temporary_name(Template, PathName)은 경로명이 Template으로 시작하는 고유한 파일 이름 PathName을 생성해요. Template은 여섯 개의 뒤따르는 X가 있는 경로명을 포함해야 해요. PathName은 여섯 개의 X가 문자와 프로세스 식별자로 대체된 Template이에요. 이 술어는 C Unix 함수 mktemp(3)에 대한 인터페이스예요. Template의 구문에 대한 정보는 absolute_file_name/2(8.26.1절)를 참조해요.

Errors

  • Template이 변수 — instantiation_error
  • Template이 변수도 원자도 아님 — type_error(atom, Template)
  • Template이 원자이지만 유효한 경로명이 아님 — domain_error(os_path, Template)
  • PathName이 변수도 원자도 아님 — type_error(atom, PathName)
  • 운영체제 오류가 발생하고 os_error Prolog 플래그 값이 error(8.22.1절) — system_error(오류를 설명하는 원자)

Portability: GNU Prolog 술어.

temporary_file/3

Templates

temporary_file(+atom, +atom, ?atom)

Description temporary_file(Directory, Prefix, PathName)은 경로명이 Directory/Prefix로 시작하는 고유한 파일 이름 PathName을 생성해요. Directory가 빈 원자 ''이면 표준 임시 디렉토리(예: /tmp)가 사용돼요. Prefix는 빈 원자 ''일 수 있어요. 이 술어는 C Unix 함수 tempnam(3)에 대한 인터페이스예요. Directory의 구문에 대한 정보는 absolute_file_name/2(8.26.1절)를 참조해요.

Errors

  • Directory가 변수 — instantiation_error
  • Directory가 변수도 원자도 아님 — type_error(atom, Directory)
  • Directory가 원자이지만 유효한 경로명이 아님 — domain_error(os_path, Directory)
  • Prefix가 변수 — instantiation_error
  • Prefix가 변수도 원자도 아님 — type_error(atom, Prefix)
  • PathName이 변수도 원자도 아님 — type_error(atom, PathName)
  • 운영체제 오류가 발생하고 os_error Prolog 플래그 값이 error(8.22.1절) — system_error(오류를 설명하는 원자)

Portability: GNU Prolog 술어.

date_time/1

Templates

date_time(?compound)

Description date_time(DateTime)은 현재 날짜와 시간을 포함하는 복합 항과 DateTime을 통일해요. DateTime은 dt(Year, Month, Day, Hour, Minute, Second) 구조예요. dt/6 항의 각 하위 인자는 정수예요.

Errors

  • DateTime이 변수도 복합 항도 아님 — type_error(compound, DateTime)
  • DateTime이 복합 항이지만 dt/6 구조가 아님 — domain_error(date_time, DateTime)
  • DateTime이 dt/6 구조이고 어떤 요소 E가 변수도 정수도 아님 — type_error(integer, E)

Portability: GNU Prolog 술어.

host_name/1

Templates

host_name(?atom)

Description host_name(HostName)은 현재 GNU Prolog 프로세스를 실행하는 호스트 기계의 이름과 HostName을 통일해요. 소켓을 사용할 수 있으면(8.28.1절) 반환된 이름은 완전 자격(fully qualified)이에요. 그 경우 host_name/1은 HostName이 기계의 자격 없는 이름(또는 별칭)으로 인스턴스화되어도 성공해요.

Errors

  • HostName이 변수도 원자도 아님 — type_error(atom, HostName)
  • 운영체제 오류가 발생하고 os_error Prolog 플래그 값이 error(8.22.1절) — system_error(오류를 설명하는 원자)

Portability: GNU Prolog 술어.

os_version/1

Templates

os_version(?atom)

Description os_version(OSVersion)은 현재 GNU Prolog 프로세스를 실행하는 기계의 운영체제 버전과 OSVersion을 통일해요.

Errors

  • OSVersion이 변수도 원자도 아님 — type_error(atom, OSVersion)
  • 운영체제 오류가 발생하고 os_error Prolog 플래그 값이 error(8.22.1절) — system_error(오류를 설명하는 원자)

Portability: GNU Prolog 술어.

architecture/1

Templates

architecture(?atom)

Description architecture(Architecture)는 현재 GNU Prolog 프로세스를 실행하는 기계의 이름과 Architecture를 통일해요.

Errors

  • Architecture가 변수도 원자도 아님 — type_error(atom, Architecture)
  • 운영체제 오류가 발생하고 os_error Prolog 플래그 값이 error(8.22.1절) — system_error(오류를 설명하는 원자)

Portability: GNU Prolog 술어.

shell/2, shell/1, shell/0

Templates

shell(+atom, ?integer)
shell(+atom)
shell

Description

  • shell(Command, Status) — Command를 실행하기 위해 새 셸(SHELL 환경 변수가 이름을 정함)을 호출하고 실행 결과와 Status를 통일. Command가 빈 원자 ''이면 새 대화형 셸이 실행됨. 호출된 프로세스가 종료되면 제어가 Prolog로 돌아감.
  • shell(Command)shell(Command, 0)과 동일.
  • shellshell('', 0)과 동일.

Errors

  • Command가 변수 — instantiation_error
  • Command가 변수도 원자도 아님 — type_error(atom, Command)
  • Status가 변수도 정수도 아님 — type_error(integer, Status)

Portability: GNU Prolog 술어.

system/2, system/1

Templates

system(+atom, ?integer)
system(+atom)

Description system(Command, Status)는 Command를 실행하기 위해 새 기본 셸을 호출하고 실행 결과와 Status를 통일해요. 셸 프로세스가 종료되면 제어가 Prolog로 돌아감. 이 술어는 C Unix 함수 system(3)에 대한 인터페이스예요. system(Command)system(Command, 0)과 동일해요.

Errors

  • Command가 변수 — instantiation_error
  • Command가 변수도 원자도 아님 — type_error(atom, Command)
  • Status가 변수도 정수도 아님 — type_error(integer, Status)

Portability: GNU Prolog 술어.

spawn/3, spawn/2

Templates

spawn(+atom, +atom_list, ?integer)
spawn(+atom, +atom_list)

Description spawn(Command, Arguments, Status)는 리스트 Arguments의 각 요소를 명령줄의 인자로 전달하며 Command를 실행하고 실행 결과와 Status를 통일해요. 명령이 종료되면 제어가 Prolog로 돌아감. spawn(Command, Arguments)spawn(Command, Arguments, 0)과 동일해요.

Errors

  • Command가 변수 — instantiation_error
  • Command가 변수도 원자도 아님 — type_error(atom, Command)
  • Arguments가 부분 리스트이거나 변수인 요소를 가진 리스트 — instantiation_error
  • Arguments가 부분 리스트도 리스트도 아님 — type_error(list, Arguments)
  • Arguments 리스트의 어떤 요소 E가 변수도 원자도 아님 — type_error(atom, E)
  • Status가 변수도 정수도 아님 — type_error(integer, Status)
  • 운영체제 오류가 발생하고 os_error Prolog 플래그 값이 error(8.22.1절) — system_error(오류를 설명하는 원자)

Portability: GNU Prolog 술어.

popen/3

Templates

popen(+atom, +io_mode, -stream)

Description popen(Command, Mode, Stream)은 파이프를 만들어 Command를 실행하기 위해 새 기본 셸을 호출하고 생성된 프로세스의 표준 입력 또는 표준 출력에 스트림을 연관시켜요. Mode가 read(각각 write)이면 입력(각각 출력) 스트림이 생성되고 Stream은 연관된 스트림 항과 통일돼요. 스트림에 쓰는 것은 명령의 표준 입력에 쓰는 것이고, 스트림에서 읽는 것은 명령의 표준 출력을 읽는 것이에요. 스트림은 close/2(8.10.7절)를 사용해 닫아야 해요. 이 술어는 C Unix 함수 popen(3)에 대한 인터페이스예요.

Errors

  • Command가 변수 — instantiation_error
  • Command가 변수도 원자도 아님 — type_error(atom, Command)
  • Mode가 변수 — instantiation_error
  • Mode가 변수도 원자도 아님 — type_error(atom, Mode)
  • Mode가 원자이지만 readwrite도 아님 — domain_error(io_mode, Mode)
  • Stream이 변수가 아님 — uninstantiation_error(Stream)
  • 운영체제 오류가 발생하고 os_error Prolog 플래그 값이 error(8.22.1절) — system_error(오류를 설명하는 원자)

Portability: GNU Prolog 술어.

exec/5, exec/4

Templates

exec(+atom, -stream, -stream, -stream, -integer)
exec(+atom, -stream, -stream, -stream)

Description exec(Command, StreamIn, StreamOut, StreamErr, Pid)는 Command를 실행하기 위해 새 기본 셸을 호출하고 생성된 프로세스의 표준 스트림에 스트림을 연관시켜요. StreamIn은 Command의 표준 입력 스트림과 연관된 스트림 항과 통일돼요(출력 스트림). StreamOut은 Command의 표준 출력 스트림과 연관된 스트림 항과 통일돼요(입력 스트림). StreamErr은 Command의 표준 오류 스트림과 연관된 스트림 항과 통일돼요(입력 스트림). Pid는 새 프로세스의 프로세스 식별자와 통일돼요. 이 정보는 wait/2(8.27.25절)를 사용해 실행 상태를 얻는 것이 필요할 때만 유용해요. wait/2 호출이 이루어질 때까지 프로세스는 시스템 프로세스 테이블에 남아 있어요(종료되면 좀비 프로세스로). 이런 이유로 상태가 필요하지 않다면 exec/4를 사용하는 것이 더 좋아요.

exec/4exec/5와 비슷하지만 프로세스가 종료되는 즉시 시스템 프로세스에서 제거돼요.

Errors

  • Command가 변수 — instantiation_error
  • Command가 변수도 원자도 아님 — type_error(atom, Command)
  • StreamIn이 변수가 아님 — uninstantiation_error(StreamIn)
  • StreamOut이 변수가 아님 — uninstantiation_error(StreamOut)
  • StreamErr이 변수가 아님 — uninstantiation_error(StreamErr)
  • Pid가 변수가 아님 — uninstantiation_error(Pid)
  • 운영체제 오류가 발생하고 os_error Prolog 플래그 값이 error(8.22.1절) — system_error(오류를 설명하는 원자)

Portability: GNU Prolog 술어.

fork_prolog/1

Templates

fork_prolog(-integer)

Description fork_prolog(Pid)는 PID에서만 부모 프로세스와 다른 자식 프로세스를 생성해요. 부모 프로세스에서 Pid는 자식의 PID와 통일되고, 자식 프로세스에서 Pid는 0과 통일돼요. 부모 프로세스에서 자식 프로세스의 상태는 wait/2(8.27.25절)를 사용해 얻을 수 있어요. wait/2 호출이 이루어질 때까지 자식 프로세스는 시스템 프로세스 테이블에 남아 있어요(종료되면 좀비 프로세스로). 이 술어는 C Unix 함수 fork(2)에 대한 인터페이스예요.

Errors

  • Pid가 변수가 아님 — uninstantiation_error(Pid)
  • 운영체제 오류가 발생하고 os_error Prolog 플래그 값이 error(8.22.1절) — system_error(오류를 설명하는 원자)

Portability: GNU Prolog 술어.

create_pipe/2

Templates

create_pipe(-stream, -stream)

Description create_pipe(StreamIn, StreamOut)은 파이프 inode를 가리키는 스트림 쌍을 생성해요. StreamIn은 파이프의 입력 측과 연관된 스트림 항과 통일되고 StreamOut은 출력 측과 연관된 스트림 항과 통일돼요. 이 술어는 C Unix 함수 pipe(2)에 대한 인터페이스예요.

Errors

  • StreamIn이 변수가 아님 — uninstantiation_error(StreamIn)
  • StreamOut이 변수가 아님 — uninstantiation_error(StreamOut)
  • 운영체제 오류가 발생하고 os_error Prolog 플래그 값이 error(8.22.1절) — system_error(오류를 설명하는 원자)

Portability: GNU Prolog 술어.

wait/2

Templates

wait(+integer, ?integer)

Description wait(Pid, Status)는 식별자가 Pid인 자식 프로세스가 종료될 때까지 기다려요. 그런 다음 Status가 종료 상태와 통일돼요. 이 술어는 C Unix 함수 waitpid(2)에 대한 인터페이스예요.

Errors

  • Pid가 변수 — instantiation_error
  • Pid가 변수도 정수도 아님 — type_error(integer, Pid)
  • Status가 변수도 정수도 아님 — type_error(integer, Status)
  • 운영체제 오류가 발생하고 os_error Prolog 플래그 값이 error(8.22.1절) — system_error(오류를 설명하는 원자)

Portability: GNU Prolog 술어.

prolog_pid/1

Templates

prolog_pid(?integer)

Description prolog_pid(Pid)는 현재 GNU Prolog 프로세스의 프로세스 식별자와 Pid를 통일해요.

Errors

  • Pid가 변수도 정수도 아님 — type_error(integer, Pid)

Portability: GNU Prolog 술어.

send_signal/2

Templates

send_signal(+integer, +integer)
send_signal(+integer, +atom)

Description send_signal(Pid, Signal)은 식별자가 Pid인 프로세스에 Signal을 보내요. Signal은 정수로 직접 또는 원자로 기호적으로 지정될 수 있어요. 허용되는 원자는 기계에 의존해요(예: SIGINT, SIGQUIT, SIGKILL, SIGUSR1, SIGUSR2, SIGALRM, …). 이 술어는 C Unix 함수 kill(2)에 대한 인터페이스예요.

Errors

  • Pid가 변수 — instantiation_error
  • Pid가 변수도 정수도 아님 — type_error(integer, Pid)
  • Signal이 변수 — instantiation_error
  • Signal이 변수도 정수도 원자도 아님 — type_error(integer, Signal)
  • 운영체제 오류가 발생하고 os_error Prolog 플래그 값이 error(8.22.1절) — system_error(오류를 설명하는 원자)

Portability: GNU Prolog 술어.

sleep/1

Templates

sleep(+number)

Description sleep(Seconds)는 Seconds 초 동안 GNU Prolog 프로세스를 잠재워요. Seconds는 정수 또는 부동소수점 수(그 경우 1보다 작을 수 있음)일 수 있어요. 이 술어는 C Unix 함수 usleep(3)에 대한 인터페이스예요.

Errors

  • Seconds가 변수 — instantiation_error
  • Seconds가 변수도 숫자도 아님 — type_error(number, Seconds)
  • Seconds가 0보다 작은 숫자 — domain_error(not_less_than_zero, Seconds)

Portability: GNU Prolog 술어.

select/5

Templates

select(+list, ?list, +list, ?list, +number)

Description select(Reads, ReadyReads, Writes, ReadyWrites, TimeOut)는 여러 스트림(또는 파일 기술자)이 상태를 바꿀 때까지 기다려요. ReadyReads는 읽기 위해 문자를 사용할 수 있는 Reads에 나열된 요소들의 리스트와 통일돼요. 비슷하게 ReadyWrites는 즉시 쓰기에 충분한 Writes의 요소들의 리스트와 통일돼요. Reads와 Writes의 요소는 스트림 항 또는 별칭 또는 파일 기술자로 간주되는 정수예요(예: 소켓의 경우, 8.28절). select/5로 테스트해야 하는 스트림은 버퍼링되지 않아야 해요. 이는 open/4(8.10.6절)로 열 때 또는 나중에 set_stream_buffering/2(8.10.27절)로 할 수 있어요. TimeOut은 select/5가 반환되기 전에 경과되는 시간(밀리초)의 상한이에요. TimeOut ≤ 0(타임아웃 없음)이면 select/5는 무언가(읽기 또는 쓰기)를 사용할 수 있을 때까지 기다려 무한히 차단될 수 있어요. 이 술어는 C Unix 함수 select(2)에 대한 인터페이스예요.

Errors

  • Reads(또는 Writes)가 부분 리스트이거나 변수인 요소 E를 가진 리스트 — instantiation_error
  • Reads가 부분 리스트도 리스트도 아님 — type_error(list, Reads)
  • Writes가 부분 리스트도 리스트도 아님 — type_error(list, Writes)
  • ReadyReads가 부분 리스트도 리스트도 아님 — type_error(list, ReadyReads)
  • ReadyWrites가 부분 리스트도 리스트도 아님 — type_error(list, ReadyWrites)
  • Reads(또는 Writes) 리스트의 어떤 요소 E가 스트림 항 또는 별칭도 정수도 아님 — domain_error(stream_or_alias, E)
  • Reads(또는 Writes) 리스트의 어떤 요소 E가 선택 가능한 항목이 아님 — domain_error(selectable_item, E)
  • Reads(또는 Writes) 리스트의 어떤 요소 E가 0보다 작은 정수 — domain_error(not_less_than_zero, E)
  • Reads(또는 Writes) 리스트의 어떤 요소 E가 스트림 항 또는 별칭이지만 열린 스트림과 연관되지 않음 — existence_error(stream, E)
  • Reads 리스트의 어떤 요소 E가 출력 스트림과 연관 — permission_error(input, stream, E)
  • Writes 리스트의 어떤 요소 E가 입력 스트림과 연관 — permission_error(output, stream, E)
  • TimeOut이 변수 — instantiation_error
  • TimeOut이 변수도 숫자도 아님 — type_error(number, TimeOut)
  • 운영체제 오류가 발생하고 os_error Prolog 플래그 값이 error(8.22.1절) — system_error(오류를 설명하는 원자)

Portability: GNU Prolog 술어.

더 알아보기