aio_read()
プログラムは、最初にorを使用して非同期 I/O 操作を発行しaio_write()
、次に呼び出しexit()
て自分自身を終了させることができます。
...
aio_write(aiocbp);
exit(0);
私の質問は、exit()
非同期 i/o が完了するまで呼び出しが待機するか、プログラムが直接終了するかということです。
標準で関連する言語は次のとおりだと思います。
プロセス終了の結果
呼び出しプロセスで開かれているすべてのファイル記述子、ディレクトリ ストリーム、変換記述子、およびメッセージ カタログ記述子は閉じられます。
ソース: http://pubs.opengroup.org/onlinepubs/9699919799/functions/_Exit.html
と:
close() が呼び出されたときに、fildes に対して未解決のキャンセル可能な非同期 I/O 操作がある場合、その I/O 操作はキャンセルされる場合があります。キャンセルされていない I/O 操作は、close() 操作がまだ行われていないかのように完了します。キャンセルされていないすべての操作は、操作が完了するまで close() がブロックされたかのように完了します。close() 操作自体は、そのような I/O の完了を待ってブロックする必要はありません。I/O 操作が取り消されるかどうか、および close() でどの I/O 操作が取り消される可能性があるかは、実装によって定義されます。
ソース: http://pubs.opengroup.org/onlinepubs/9699919799/functions/close.html
したがって、それは特定されていません。未完了の操作がキャンセルされるか、操作が完了するまでブロックされます。