0
Linux에서 POSIX 비동기 IO API로 파일 복사 프로그램을 구현하려고합니다. 비동기 IO의 진행 상황을 표시 할 수 있습니까?
나는이 시도 :main() {
char data[200];
int fd = open("data.txt", O_RDONLY); // text file on the disk
struct aiocb aio;
aio.aio_fildes = fd;
aio.aio_buf = data;
aio.aio_nbytes = sizeof(data);
aio.aio_offset = 0;
memset(&aio, 0, sizeof(struct aiocb));
aio_read(arg->aio_p);
int counter = 0;
while (aio_error(arg->aio_p) == EINPROGRESS) {
printf("counter: %d\n", counter++);
}
int ret = aio_return(&aio);
printf("ret value %d \n",ret);
return 0;
}
그러나 카운터 나는 그것이 aio_read 및 aio_write 기능의 진행 상황을 표시 할 수
를 실행할 때 다른 결과를 모든 시간을주고?를
"작동하지 않았다"는 것은 무엇을 의미합니까? 무엇이 잘못되었는지 구체적으로 설명하십시오. – rgettman
기본적인 디버깅 기술은'aio_error()'에 의해 반환 된 값을 캡쳐하고 출력 할 것을 제안하므로 루프가 끝나는 이유를 알 수 있습니다. 아마도 EINPROGRESS를 반환하지 않지만 반환되는 것은 무엇입니까? 아마도 I/O가 완료되었을 것입니까? –
진도를 배우려고하기 때문에 EINPROGRESS를 사용했습니다. I/O가 완료되면 분명히 진행률은 % 100입니다. :) 그러나이 코드는 실행할 때마다 다른 결과를 반환합니다. @JonathanLeffler –