JM プロジェクトは、主に Linux 関連のマニュアルページの日本語ページを翻訳・公開しています。
... (0) struct ioRequest { /* Application-defined structure for tracking I/O requests */ int reqNum; int status; struct aiocb *aiocbp; }; static volatile sig_atomic_t gotSIGQUIT = 0; /* On delivery of SIGQUIT, we attempt to cancel all outstanding I/O reque ... available as struct ioRequest *ioReq = si->si_value.sival_ptr; and the file descriptor would then be available via ioReq->aiocbp->aio_fildes */ } } int main(int argc, char *argv[]) { struct sigaction sa; int s; int numReqs; /* Total number of queued I ... ing file descriptor */ for (int j = 0; j < numReqs; j++) { ioList[j].reqNum = j; ioList[j].status = EINPROGRESS; ioList[j].aiocbp = &aiocbList[j]; ioList[j].aiocbp->aio_fildes = open(argv[j + 1], O_RDONLY); if (ioList[j].aiocbp->aio_fildes == -1) errEx ... ... (この順序で) 対応する ( aiocb 構造体の説明は aio (7) を参照)。 データの読み込みは、ファイルオフセットに関係なく、絶対位置 aiocbp->aio_offset を開始点として行われる。呼び出しの後のファイルオフセットは規定されていない。 「非同期」とは「リクエストがキュー ... も知れない。 aio_error (3) を使うことで完了したかをテストできる。 完了した I/O 操作の返り値は aio_return (3) で取得できる。 aiocbp->aio_sigevent を適切に設定することで、 I/O 完了の非同期通知は受けることもできる。詳細は sigevent (7) を参照。 _POSIX_PRIOR ... ITIZED_IO が定義されていて、 かつファイルがこれをサポートしている場合、 非同期操作は呼び出したプロセスの優先度から aiocbp->aio_reqprio を引いた優先度で登録 (submit) される。 フィールド aiocbp->aio_lio_opcode は無視される。 最大オフセットを超えた ... ... 応する ( aiocb 構造体の説明は aio (7) を参照)。 O_APPEND が設定されない場合、ファイルオフセットに関係なく、 データは絶対位置 aiocbp->aio_offset を開始点として書き込まれる。 O_APPEND が設定されている場合、データはファイルの末尾に、 aio_write () の呼び出し ... も知れない。 aio_error (3) を使うことで完了したかをテストできる。 完了した I/O 操作の返り値は aio_return (3) で取得できる。 aiocbp->aio_sigevent を適切に設定することで、 I/O 完了の非同期通知は受けることもできる。詳細は sigevent (7) を参照。 _POSIX_PRIOR ... ITIZED_IO が定義されていて、 かつファイルがこれをサポートしている場合、 非同期操作は呼び出したプロセスの優先度から aiocbp->aio_reqprio を引いた優先度で登録 (submit) される。 フィールド aiocbp->aio_lio_opcode は無視される。 最大オフセットを超えた ... ... aio_cancel () 関数は、ファイルディスクリプター fd についての完了して いない非同期 I/O リクエストをキャンセルしようとする。 aiocbp が NULL の場合、そのような全てのリクエストがキャンセルされる。 aiocbp が NULL でない場合、 aiocbp で指された制御ブロックで ... io_cancel () は通常の I/O 操作の実行後と同じように終了する。 (この場合、 aio_error (3) はステータス EINPROGRESSS を返す)。 aiocbp が NULL でなく、かつ fd が非同期操作が開始されたファイルディスクリプターと異なる場合、 生じる結果は不定である。 どの操作を ... ... _error () 関数は aiocbp で指された制御ブロックでの非同期 I/O リクエス トのエラー状態を返す。( aiocb 構造体の説明は aio (7) を参照) 返り値 この関数 ... 期の read (2), write (2), fsync (2), fdatasync (2) の呼び出しの場合で errno 変数に格納されるのと同じ値になる。 エラー EINVAL aiocbp が、まだ返り値 (return status) ( aio_return (3) を参照) が取得されていない非同期 I/O リクエストの制御ブロックを指していない ... ... る。 説明 aio_return () 関数は aiocbp で指された制御ブロックにおける非同期 I/O リクエストの最終的な返り値を返す。 ( aiocb 構造体の説明は aio (7) を参照) この関数 ... no が適切に設定される。 非同期 I/O 操作が完了していない場合、 aio_return () の返り値とその影響は不定である。 エラー EINVAL aiocbp が、返り値がまだ取得されていない非同期 I/O リクエストの 制御ブロックを指していない。 ENOSYS aio_return () は実装されていな ... ... ) 関数は、 aiocbp->aio_fildes で関連付けられているまだ 完了していない全ての非同期 I/O 操作を同期させる。 ( aiocb 構造体の説明は aio (7) を参 ... fdatasync (2) の非同期版となる。 この関数はリクエストを行うだけである点に注意すること。 I/O の完了の待ち合わせは行わない。 aiocbp で指される構造体のフィールドのうち、この呼び出しで aio_fildes 以外に使用されるのは aio_sigevent フィールド ( sigevent 構造 ... 日本語の文書やマニュアルを配布している個人/プロジェクトへのリンクです。