AIO_WAITCOMPLETE(2)

명칭
aio_waitcomplete - 비동기 입출력 요구의 완료까지의 대기

프로그램 라이브러리
libc

서식
<aio.h> int aio_waitcomplete(struct aiocb **iocbp, struct timespec *timeout)

해설
aio_waitcomplete() 함수는 비동기 입출력의 완료까지 기다립니다. 완료하는 대로, aio_waitcomplete() (은)는 그 함수의 결과를 돌려주어, 원래의 요구에 관련하는 구조체에의 포인터를 iocbp 에 세트 합니다. 만약, aio_waitcomplete() 함수가 불려 가기 전에 비동기 입출력 요구가 완료하고 있었을 경우에는, 완료한 요구의 결과를 즉석에서 돌려줍니다.

timeout 하지만 누르포인타가 아닌 경우, 그것은 비동기 입출력 요구가 완료할 때까지 대기하는 최대 시간을 지정합니다. timeout 하지만 누르포인타의 경우는, aio_waitcomplete() (은)는 무기한으로 대기합니다. 폴링 하는 경우는, 인수 timeout (은)는 눌이 아니고, 0 의 값을 가지는 timeval 구조체를 가리키도록(듯이) 해야 합니다.

aio_waitcomplete() 함수는 aio_return() 의 역할도 합니다. 따라서, 컨트롤 블록은 iocbp 그리고 돌려주어지고 있으므로, aio_return() (을)를 호출해야 하는 것이 아닙니다.

반환값
비동기 입출력 리퀘스트가 완료했을 경우, iocbp 에 원래의 리퀘스트로부터 건네받은 컨트롤 블록을 가리키는 포인터를 설정해, read(2), write(2), fsync(2) 그리고 진술되고 있는 것과 같은 스테이터스를 돌려줍니다. 실패했을 경우, aio_waitcomplete() 하 -1 (을)를 돌려주어, iocbp 에 NULL (을)를 설정합니다. 그리고, errno 에 에러의 상황을 설정합니다.

에러
aio_waitcomplete() 함수는 다음의 경우에 실패합니다:

[EINVAL]
    지정된 제한 시간이 무효입니다.

[EAGAIN]
    프로세스는 아직 aio_read() (이)나 aio_write() (을)를 호출하고 있지 않습니다.

[EINTR]
    타임 아웃 하기 전으로, 한편 비동기 입출력 리퀘스트가 완료하기 전에 시그널이 닿았습니다.

[EWOULDBLOCK]

[EINPROGRESS]
    비동기 입출력 리퀘스트가 완료하기 전에, 지정된 제한 시간에 이르렀습니다.

관련 항목
aio_cancel(2), aio_error(2), aio_read(2), aio_return(2), aio_suspend(2), aio_write(2), fsync(2), read(2), write(2)

표준
aio_waitcomplete() 함수는 FreeBSD 특유의 확장입니다.

역사
aio_waitcomplete() 함수는 FreeBSD 4.0 그리고 처음 등장했습니다.

저자
aio_waitcomplete() 함수와 이 메뉴얼 페이지는 Christopher M Sedore <cmsedore@maxwell.syr.edu> 하지만 작성했습니다.