2017-09-27 1 views
0

파일 끝에 도달했을 때 wait_for_input이 대기하지 않는 이유를 알지 못합니다. Mac OS X에서 swi-prolog 7.6.0 및 Red Hat Linux 6에서 swi-prolog 5.7.11을 사용해 보았습니다. 따옴표없이 한 줄 "f (1)."을 포함하는 파일로 스트림을 엽니 다. wait_for_input 반환하지만 스트림을 읽는 end_of_file 제공하는 다음 동작을 가져옵니다.swi-prolog 파일의 끝에 스트림이있는 파일에 대한 wait_for_input

? open ('file.prolog', 읽기, InStrm, [별칭 (instrm), eof_action (재설정)]).
InStrm = instrm.

? wait_for_input ([instrm], RL, 15).
RL = [instrm].

? read (instrm, Trm).
Trm = f (1).

? wait_for_input ([instrm], RL, 15).
RL = [instrm].

? read (instrm, Trm).
Trm = end_of_file.

eof_action (reset)을 사용하여 다른 프로세스가 파일에 추가하면 독자가 새 데이터를 가져옵니다.

답변

0

wait_for_input/3은 실제로 사용 사례로 사용되지 않아야합니다.

가능한 구현이 기반으로합니다

는 스위스 925 - 프롤로그의 문서에 따르면, (사용 가능한 경우, 귀하의 경우 진실해야하는) 기본 사용하여/3 "설문 조사"시스템 호출을 wait_for_input poll() 시스템 콜.

"설문 조사"시스템 호출, 차례로, 항상 일반 파일 즉시 성공 :

일반 파일은 항상 읽기와 쓰기에 대한 TRUE 폴링된다.

http://www.swi-prolog.org/pldoc/doc_for?object=wait_for_input/3

https://linux.die.net/man/3/poll

:

은 자세한 내용은 다음 링크를 참조하십시오
관련 문제