JM プロジェクトは、主に Linux 関連のマニュアルページの日本語ページを翻訳・公開しています。
... されたスレッドが終了された後に、 pthread_join (3) でそのスレッドを join すると、 そのスレッドの終了ステータスとして PTHREAD_CANCELED が得られる。 (スレッドの join はキャンセルが完了したかを知る唯一の方法である) 返り値 成功すると、 pthread_cancel () は 0 を ... をキャンセルする。 メインスレッドはキャンセルされたスレッドをジョインし、 キャンセルされたスレッドの終了ステータスが PTHREAD_CANCELED かどうかを 確認する。以下のシェルセッションはこのプログラムを実行した際の実行例である。 $ ./a.out thread_func(): started; ... cancellation disabled main(): sending cancellation request thread_func(): about to enable cancellation main(): thread was canceled プログラムのソース #include < pthread.h > #include < stdio.h > #include < errno.h > #include < stdlib.h > #include < unist ... ... elay is undesired, it may be useful to call functions like tcflush (3) before calling _exit (). Whether any pending I/O is canceled, and which pending I/O may be canceled upon _exit (), is implementation-dependent. C ライブラリとカーネルの違い In glibc u ... ... elay is undesired, it may be useful to call functions like tcflush (3) before calling _exit (). Whether any pending I/O is canceled, and which pending I/O may be canceled upon _exit (), is implementation-dependent. C ライブラリとカーネルの違い In glibc u ... ... elay is undesired, it may be useful to call functions like tcflush (3) before calling _exit (). Whether any pending I/O is canceled, and which pending I/O may be canceled upon _exit (), is implementation-dependent. C ライブラリとカーネルの違い In glibc u ... ... iptor %d:", j, ioList[j].aiocbp->aio_fildes); s = aio_cancel(ioList[j].aiocbp->aio_fildes, ioList[j].aiocbp); if (s == AIO_CANCELED) printf("I/O canceled\n"); else if (s == AIO_NOTCANCELED) printf("I/O not canceled\n"); else if (s == AIO_ALLDONE) printf( ... tch (ioList[j].status) { case 0: printf("I/O succeeded\n"); break; case EINPROGRESS: printf("In progress\n"); break; case ECANCELED: printf("Canceled\n"); break; default: perror("aio_error"); break; } if (ioList[j].status != EINPROGRESS) openReqs--; } } ... ... が返される。 gai_cancel () 関数は要求 req をキャンセルする。 要求が正常にキャンセルされた場合、 要求のエラーステータスに EAI_CANCELED が設定され、 通常の非同期通知が実行される。 要求が現在処理中でキャンセルできない場合もある。 この場合 gai_cancel () が呼ば ... info (3) が返すエラーコードのいずれかを返す場合もある。 要求の完了前に明示的に要求がキャンセルされた場合はエラーコード EAI_CANCELED を返す。 gai_cancel () 関数はこれらの値のいずれかを返すことがある。 EAI_CANCELED 要求は正常にキャンセルされた。 EAI_NOTCAN ... の実行例は以下のようになる。 $ ./a.out > a ftp.us.kernel.org enoent.linuxfoundation.org gnu.cz > c 2 [2] gnu.cz: Request not canceled > w 0 1 [00] ftp.us.kernel.org : Finished > l [00] ftp.us.kernel.org : 216.165.129.139 [01] enoent.linuxfoundation.org: Pr ... ... が返される。 gai_cancel () 関数は要求 req をキャンセルする。 要求が正常にキャンセルされた場合、 要求のエラーステータスに EAI_CANCELED が設定され、 通常の非同期通知が実行される。 要求が現在処理中でキャンセルできない場合もある。 この場合 gai_cancel () が呼ば ... info (3) が返すエラーコードのいずれかを返す場合もある。 要求の完了前に明示的に要求がキャンセルされた場合はエラーコード EAI_CANCELED を返す。 gai_cancel () 関数はこれらの値のいずれかを返すことがある。 EAI_CANCELED 要求は正常にキャンセルされた。 EAI_NOTCAN ... の実行例は以下のようになる。 $ ./a.out > a ftp.us.kernel.org enoent.linuxfoundation.org gnu.cz > c 2 [2] gnu.cz: Request not canceled > w 0 1 [00] ftp.us.kernel.org : Finished > l [00] ftp.us.kernel.org : 216.165.129.139 [01] enoent.linuxfoundation.org: Pr ... ... が返される。 gai_cancel () 関数は要求 req をキャンセルする。 要求が正常にキャンセルされた場合、 要求のエラーステータスに EAI_CANCELED が設定され、 通常の非同期通知が実行される。 要求が現在処理中でキャンセルできない場合もある。 この場合 gai_cancel () が呼ば ... info (3) が返すエラーコードのいずれかを返す場合もある。 要求の完了前に明示的に要求がキャンセルされた場合はエラーコード EAI_CANCELED を返す。 gai_cancel () 関数はこれらの値のいずれかを返すことがある。 EAI_CANCELED 要求は正常にキャンセルされた。 EAI_NOTCAN ... の実行例は以下のようになる。 $ ./a.out > a ftp.us.kernel.org enoent.linuxfoundation.org gnu.cz > c 2 [2] gnu.cz: Request not canceled > w 0 1 [00] ftp.us.kernel.org : Finished > l [00] ftp.us.kernel.org : 216.165.129.139 [01] enoent.linuxfoundation.org: Pr ... ... が返される。 gai_cancel () 関数は要求 req をキャンセルする。 要求が正常にキャンセルされた場合、 要求のエラーステータスに EAI_CANCELED が設定され、 通常の非同期通知が実行される。 要求が現在処理中でキャンセルできない場合もある。 この場合 gai_cancel () が呼ば ... info (3) が返すエラーコードのいずれかを返す場合もある。 要求の完了前に明示的に要求がキャンセルされた場合はエラーコード EAI_CANCELED を返す。 gai_cancel () 関数はこれらの値のいずれかを返すことがある。 EAI_CANCELED 要求は正常にキャンセルされた。 EAI_NOTCAN ... の実行例は以下のようになる。 $ ./a.out > a ftp.us.kernel.org enoent.linuxfoundation.org gnu.cz > c 2 [2] gnu.cz: Request not canceled > w 0 1 [00] ftp.us.kernel.org : Finished > l [00] ftp.us.kernel.org : 216.165.129.139 [01] enoent.linuxfoundation.org: Pr ... ... キャンセル要求を送信する。 $ ./a.out New thread started cnt = 0 cnt = 1 Canceling thread Called clean-up handler Thread was canceled; cnt = 0 上記の実行例から、スレッドがキャンセルされ、 キャンセルクリーンアップハンドラーが呼び出され、 グローバル変数 cnt ... en(s, "pthread_cancel"); } s = pthread_join(thr, &res); if (s != 0) handle_error_en(s, "pthread_join"); if (res == PTHREAD_CANCELED) printf("Thread was canceled; cnt = %d\n", cnt); else printf("Thread terminated normally; cnt = %d\n", cnt); exit(EXIT_SUC ... 日本語の文書やマニュアルを配布している個人/プロジェクトへのリンクです。