0
LinuxでPOSIX非同期IO APIを使用してファイルコピープログラムを実装しようとしています。非同期IOの進捗状況を表示することが可能です
私はこの試みた:私は
を実行するたびにaio_read aio_writeと機能の進行状況を表示することは可能です異なる結果を与える
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;
}
しかし、カウンターの?
「うまくいかない」とはどういう意味ですか?何がうまくいかなかったのか具体的 – rgettman
基本的なデバッグ手法では、 'aio_error()'によって返された値をキャプチャして出力することが推奨されるので、ループが終了する理由を知ることができます。おそらくEINPROGRESSは返されませんが、何が返されますか?おそらく、I/Oは完了しているでしょうか? –
私は進歩を学ぶためにEINPROGRESSを使用しました。 I/Oが完了すれば、明らかに進捗は%100です:)しかし、このコードは実行するたびに異なる結果を返します。 @JonathanLeffler –