X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=release%2Fman3%2Fexit.3;h=10ae6367e95e5cef4bdcf1184d47f5769a489235;hb=dba08e2eee1afb613e4e8e9310eb752cb06f45de;hp=e43ae5776f291c18b72a6e63f69ac7692cd153b6;hpb=633a2252e0be3c867dce264a180a89ce8181d36f;p=linuxjm%2FLDP_man-pages.git diff --git a/release/man3/exit.3 b/release/man3/exit.3 index e43ae577..10ae6367 100644 --- a/release/man3/exit.3 +++ b/release/man3/exit.3 @@ -1,5 +1,6 @@ .\" Copyright (C) 2001 Andries Brouwer . .\" +.\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. @@ -19,6 +20,17 @@ .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. +.\" %%%LICENSE_END +.\" +.\" FIXME There are a lot of other process termination actions that +.\" could be listed on this page. See, for example, the list in the +.\" POSIX exit(3p) page. +.\" +.\"******************************************************************* +.\" +.\" This file was generated with po4a. Translate the source file. +.\" +.\"******************************************************************* .\" .\" Japanese Version Copyright (c) 1997 HORIMOTO Masafumi .\" all rights reserved. @@ -27,148 +39,72 @@ .\" Updated & Modified 2001-12-09, Yuichi SATO .\" Updated & Modified 2005-09-06, Akihiro MOTOKI .\" Updated 2007-06-18, Akihiro MOTOKI, LDP v2.57 +.\" Updated 2013-05-01, Akihiro MOTOKI .\" -.TH EXIT 3 2009-09-20 "Linux" "Linux Programmer's Manual" -.SH ̾Á° -exit \- ¥×¥í¥»¥¹¤ÎÀµ¾ï½ªÎ» -.SH ½ñ¼° +.TH EXIT 3 2014\-03\-25 Linux "Linux Programmer's Manual" +.SH 名前 +exit \- プロセスの正常終了 +.SH 書式 .nf -.B #include +\fB#include \fP .sp -.BI "void exit(int " status ); +\fBvoid exit(int \fP\fIstatus\fP\fB);\fP .fi -.SH ÀâÌÀ -.BR exit () -´Ø¿ô¤Ï¡¢¥×¥í¥»¥¹¤òÀµ¾ï¤Ë½ªÎ»¤µ¤»¡¢ -\fIstatus & 0377\fP ¤È¤¤¤¦Ãͤò¿Æ¥×¥í¥»¥¹¤ØÊÖ¤¹ -.RB ( wait (2) -¤ò»²¾È)¡£ +.SH 説明 +\fBexit\fP() 関数は、プロセスを正常に終了させ、 \fIstatus & 0377\fP という値を親プロセスへ返す (\fBwait\fP(2) +を参照)。 .LP -.BR atexit (3) -¤ä -.BR on_exit (3) -¤Ë¤è¤Ã¤Æ -ÅÐÏ¿¤µ¤ì¤¿Á´¤Æ¤Î´Ø¿ô¤Ï¡¢¤½¤ì¤é¤¬ÅÐÏ¿¤µ¤ì¤¿½çÈ֤ȵսç¤Ë¥³¡¼¥ë¤µ¤ì¤ë¡£ -(ÅÐÏ¿¤µ¤ì¤¿´Ø¿ô¤ÎÃæ¤Ç -.BR atexit (3) -or -.BR on_exit (3) -¤ò»È¤Ã¤Æ -exit ½èÍýÃæ¤Ë¼Â¹Ô¤µ¤ì¤ëÄɲäδؿô¤òÅÐÏ¿¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë; -¿·µ¬¤ËÅÐÏ¿¤µ¤ì¤¿´Ø¿ô¤Ï¡¢¤³¤Î¸å¤Ç¼Â¹Ô¤µ¤ì¤ë´Ø¿ô¥ê¥¹¥È¤ÎÀèƬ¤Ë -Äɲ䵤ì¤ë¡£) -¤³¤ì¤é¤Î´Ø¿ô¤Î°ì¤Ä¤¬ÊÖ¤é¤Ê¤«¤Ã¤¿¾ì¹ç -(Î㤨¤Ð¡¢¤½¤Î´Ø¿ô¤¬ -.BR _exit (2) -¤ò¸Æ¤Ó½Ð¤·¤¿¤ê¡¢¥·¥°¥Ê¥ë¤Ç¼«Ê¬¼«¿È¤ò kill ¤·¤¿¾ì¹ç)¡¢ -»Ä¤ê¤Î´Ø¿ô¤Ï¤É¤ì¤â¸Æ¤Ó½Ð¤µ¤ì¤º¡¢¤½¤ì°Ê¹ß¤Î exit ½èÍý -(ÆÃ¤Ë -.BR stdio (3) -¥¹¥È¥ê¡¼¥à¤Î¥Õ¥é¥Ã¥·¥å¤Ê¤É) ¤ÏÃæ»ß¤µ¤ì¤ë¡£ -¤¢¤ë´Ø¿ô¤¬ -.BR atexit (3) -¤ä -.BR on_exit (3) -¤ò»È¤Ã¤ÆÊ£¿ô²óÅÐÏ¿¤µ¤ì¤Æ¤¤¤¿¾ì¹ç¡¢ -¤½¤Î´Ø¿ô¤ÏÅÐÏ¿¤µ¤ì¤¿¤Î¤ÈƱ¤¸²ó¿ô¤À¤±¸Æ¤Ó½Ð¤µ¤ì¤ë¡£ +\fBatexit\fP(3) や \fBon_exit\fP(3) によって 登録された全ての関数は、それらが登録された順番と逆順にコールされる。 +(登録された関数の中で \fBatexit\fP(3) or \fBon_exit\fP(3) を使って exit +処理中に実行される追加の関数を登録することができる; 新規に登録された関数は、この後で実行される関数リストの先頭に 追加される。) +これらの関数の一つが返らなかった場合 (例えば、その関数が \fB_exit\fP(2) を呼び出したり、シグナルで自分自身を kill した場合)、 +残りの関数はどれも呼び出されず、それ以降の exit 処理 (特に \fBstdio\fP(3) ストリームのフラッシュなど) は中止される。 ある関数が +\fBatexit\fP(3) や \fBon_exit\fP(3) を使って複数回登録されていた場合、 その関数は登録されたのと同じ回数だけ呼び出される。 .LP -¥ª¡¼¥×¥óÃæ¤Î -.BR stdio (3) -¥¹¥È¥ê¡¼¥à¤ÏÁ´¤Æ¥Õ¥é¥Ã¥·¥å¤µ¤ì¤Æ¡¢¥¯¥í¡¼¥º¤µ¤ì¤ë¡£ -.BR tmpfile (3) -¤Ë¤è¤Ã¤ÆºîÀ®¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Ïºï½ü¤µ¤ì¤ë¡£ +オープン中の \fBstdio\fP(3) ストリームは全てフラッシュされて、クローズされる。 \fBtmpfile\fP(3) +によって作成されたファイルは削除される。 .LP -C ɸ½à¤Ç¤Ï -.B EXIT_SUCCESS -¤È -.B EXIT_FAILURE -¤È¤¤¤¦ 2¤Ä¤ÎÄê¿ô¤¬ -ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£¤½¤ì¤¾¤ìÀµ¾ï½ªÎ»¤È°Û¾ï½ªÎ»¤ò¼¨¤¹¤â¤Î¤Ç¡¢ -.BR exit () -¤È¤·¤ÆÅϤ¹¤³¤È¤¬¤Ç¤­¤ë¡£ -.SH ÊÖ¤êÃÍ -.BR exit () -´Ø¿ô¤ÏÊÖ¤é¤Ê¤¤¡£ -.SH ½àµò -SVr4, 4.3BSD, POSIX.1-2001, C89, C99. -.SH Ãí°Õ +C 標準では \fBEXIT_SUCCESS\fP と \fBEXIT_FAILURE\fP という 2つの定数が +定義されている。それぞれ正常終了と異常終了を示すもので、 \fBexit\fP() として渡すことができる。 +.SH 返り値 +\fBexit\fP() 関数は返らない。 +.SH 属性 +.SS "マルチスレッディング (pthreads(7) 参照)" +\fBexit\fP() 関数は保護されていないグローバル変数を使用しているため、スレッドセーフではない。 +.SH 準拠 +SVr4, 4.3BSD, POSIX.1\-2001, C89, C99. +.SH 注意 .LP -.BR atexit (3) -¤ä -.BR on_exit (3) -¤ò»È¤Ã¤ÆÅÐÏ¿¤µ¤ì¤¿´Ø¿ô¤ÎÃæ¤Ç -.BR exit () -¤« -.BR longjmp (3) -¤¬¸Æ¤Ó½Ð¤µ¤ì¤¿¾ì¹ç¡¢ -²¿¤¬µ¯¤³¤ë¤«¤Ï̤ÄêµÁ¤Ç¤¢¤ë¡£ +\fBatexit\fP(3) や \fBon_exit\fP(3) を使って登録された関数の中で \fBexit\fP() か \fBlongjmp\fP(3) +が呼び出された場合、 何が起こるかは未定義である。 \fBexecve\fP(2) を呼び出すと、 \fBatexit\fP(3) や \fBon_exit\fP(3) +を使って登録された関数が削除される点に注意すること。 .LP -.B EXIT_SUCCESS -¤È -.B EXIT_FAILURE -¤ò»È¤¦¤È¡¢0 ¤ä (1 ¤ä \-1 ¤È¤¤¤Ã¤¿) 0 °Ê³°¤ÎÃͤò»È¤¦¤Î¤ËÈæ¤Ù¤Æ -(Unix °Ê³°¤Î´Ä¶­¤Ë) °Ü¿¢¤¹¤ë¤Î¤¬¤¤¤¯¤é¤«´Êñ¤Ë¤Ê¤ë¡£ -ÆÃ¤Ë VMS ¤ÏÊ̤ÎÊý¼°¤òÍѤ¤¤Æ¤¤¤ë¡£ +\fBEXIT_SUCCESS\fP と \fBEXIT_FAILURE\fP を使うと、0 や (1 や \-1 といった) 0 以外の値を使うのに比べて +(UNIX 以外の環境に) 移植するのがいくらか簡単になる。 特に VMS は別の方式を用いている。 .LP -BSD ¤Ï½ªÎ»¥³¡¼¥É¤òɸ½à²½¤·¤è¤¦¤È¤·¤Æ¤¤¤ë; -.I -¤ò»²¾È¤¹¤ë¤³¤È¡£ +BSD は終了コードを標準化しようとしている; \fI\fP を参照すること。 .LP -.BR exit () -¤Î¸å¡¢¿Æ¥×¥í¥»¥¹¤Ë½ªÎ»¥¹¥Æ¡¼¥¿¥¹¤¬ÅϤµ¤ì¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ -½ªÎ»¥¹¥Æ¡¼¥¿¥¹¤ÎÅϤ·Êý¤Ë¤Ï 3 ¤Ä¤Î¾ì¹ç¤¬¤¢¤ë¡£ -¿Æ¥×¥í¥»¥¹¤¬ -.B SA_NOCLDWAIT -¤òÀßÄꤷ¤¿¾ì¹ç¡¢ -¤Þ¤¿¤Ï -.B SIGCHLD -¥Ï¥ó¥É¥é¤ò -.B SIG_IGN -¤ËÀßÄꤷ¤¿¾ì¹ç¡¢ -¥¹¥Æ¡¼¥¿¥¹¤ÏÇË´þ¤µ¤ì¤ë¡£ -¿Æ¥×¥í¥»¥¹¤¬»Ò¥×¥í¥»¥¹¤Î½ªÎ»¤òÂԤäƤ¤¤ë¾ì¹ç¡¢ -¿Æ¥×¥í¥»¥¹¤Ë½ªÎ»¥¹¥Æ¡¼¥¿¥¹¤¬ÅÁ¤¨¤é¤ì¤ë¡£ -¤É¤Á¤é¤Î¾ì¹ç¤Ç¤â exit ¤Î¥×¥í¥»¥¹¤Ïľ¤Á¤Ë½ªÎ»¤¹¤ë¡£ -¡Ö½ªÎ»¥¹¥Æ¡¼¥¿¥¹¤ò´ØÃΤ»¤º½ªÎ»¤âÂÔ¤¿¤Ê¤¤¡× -¤È¤¤¤¦¤³¤È¤ò¿Æ¥×¥í¥»¥¹¤¬»Ø¼¨¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢ -exit ¥×¥í¥»¥¹¤Ï (½ªÎ»¥¹¥Æ¡¼¥¿¥¹¤òɽ¤¹ 1 ¥Ð¥¤¥È¤Î¤ß¤òÊÝ»ý¤¹¤ë) -¡Ö¥¾¥ó¥Ó¡×¥×¥í¥»¥¹¤Ë¤Ê¤ë¡£ -¤³¤ì¤Ë¤è¤ê¡¢¸å¤«¤é -.BR wait (2) -´Ø¿ô¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ç¡¢ -¿Æ¥×¥í¥»¥¹¤Ï½ªÎ»¥¹¥Æ¡¼¥¿¥¹¤òÃΤ뤳¤È¤¬¤Ç¤­¤ë¡£ +\fBexit\fP() の後、親プロセスに終了ステータスが渡されなければならない。 終了ステータスの渡し方には 3 つの場合がある。 親プロセスが +\fBSA_NOCLDWAIT\fP を設定した場合、 または \fBSIGCHLD\fP ハンドラを \fBSIG_IGN\fP に設定した場合、 +ステータスは破棄される。 親プロセスが子プロセスの終了を待っている場合、 親プロセスに終了ステータスが伝えられる。 どちらの場合でも exit +のプロセスは直ちに終了する。 「終了ステータスを関知せず終了も待たない」 ということを親プロセスが指示していない場合、 exit プロセスは +(終了ステータスを表す 1 バイトのみを保持する) 「ゾンビ」プロセスになる。 これにより、後から \fBwait\fP(2) 関数を呼び出すことで、 +親プロセスは終了ステータスを知ることができる。 .LP -.B SIGCHLD -¥·¥°¥Ê¥ë¤Î¥µ¥Ý¡¼¥È¤¬¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢ -¤³¤Î¥·¥°¥Ê¥ë¤Ï¿Æ¥×¥í¥»¥¹¤ËÁ÷¤é¤ì¤ë¡£ -¿Æ¥×¥í¥»¥¹¤¬ -.B SA_NOCLDWAIT -¤òÀßÄꤷ¤¿¾ì¹ç¡¢ -.B SIGCHLD -¥·¥°¥Ê¥ë¤¬Á÷¤é¤ì¤ë¤«¤É¤¦¤«¤ÏÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤¤¡£ +\fBSIGCHLD\fP シグナルのサポートが実装されている場合、 このシグナルは親プロセスに送られる。 親プロセスが \fBSA_NOCLDWAIT\fP +を設定した場合、 \fBSIGCHLD\fP シグナルが送られるかどうかは定義されていない。 .LP -¤½¤Î¥×¥í¥»¥¹¤¬¥»¥Ã¥·¥ç¥ó¤Î¥ê¡¼¥À¡¼¤Ç¡¢ -¤½¤Î¥×¥í¥»¥¹¤ÎÀ©¸æüËö¤¬¤½¤Î¥»¥Ã¥·¥ç¥ó¤ÎÀ©¸æüËö¤Ç¤¢¤ë¾ì¹ç¡¢ -¤³¤ÎÀ©¸æüËö¤Î¥Õ¥©¥¢¥°¥é¥¦¥ó¥É¥×¥í¥»¥¹¥°¥ë¡¼¥×¤Ë¤¢¤ë -³Æ¥×¥í¥»¥¹¤Ë -.B SIGHUP -¥·¥°¥Ê¥ë¤¬Á÷¤é¤ì¡¢Ã¼Ëö¤¬¥»¥Ã¥·¥ç¥ó¤«¤éÀÚ¤êÎ¥¤µ¤ì¤ë¡£ -¤³¤ì¤Ë¤è¤ê¿·¤·¤¤À©¸æ¥×¥í¥»¥¹¤ò¼èÆÀ¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ +そのプロセスがセッションのリーダーで、 そのプロセスの制御端末がそのセッションの制御端末である場合、 +この制御端末のフォアグラウンドプロセスグループにある 各プロセスに \fBSIGHUP\fP シグナルが送られ、端末がセッションから切り離される。 +これにより新しい制御プロセスを取得することができる。 .LP -¥×¥í¥»¥¹¤¬½ªÎ»¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢¥×¥í¥»¥¹¥°¥ë¡¼¥×¤¬¸ÉΩ¤·¤Æ¡¢ -¤½¤Î¥°¥ë¡¼¥×¤Î¥á¥ó¥Ð¡¼¤Î¤¦¤Á¤Î¤É¤ì¤«¤¬Ää»ß¤·¤¿¾ì¹ç¡¢ -¥×¥í¥»¥¹¥°¥ë¡¼¥×¤Î³Æ¥×¥í¥»¥¹¤ËÂФ·¤Æ -.B SIGHUP -¥·¥°¥Ê¥ë¤¬Á÷¤é¤ì¡¢Â³¤¤¤Æ -.B SIGCONT -¥·¥°¥Ê¥ë¤¬Á÷¤é¤ì¤ë¡£ -¸ÉΩ¤·¤¿ (orphaned) ¥×¥í¥»¥¹¥°¥ë¡¼¥×¤ÎÀâÌÀ¤Ï -.BR setpgid (2) -¤ò»²¾È¡£ -.SH ´ØÏ¢¹àÌÜ -.BR _exit (2), -.BR setpgid (2), -.BR wait (2), -.BR atexit (3), -.BR on_exit (3), -.BR tmpfile (3) +プロセスが終了することにより、プロセスグループが孤立して、 そのグループのメンバーのうちのどれかが停止した場合、 プロセスグループの各プロセスに対して +\fBSIGHUP\fP シグナルが送られ、続いて \fBSIGCONT\fP シグナルが送られる。 孤立した (orphaned) プロセスグループの説明は +\fBsetpgid\fP(2) を参照。 +.SH 関連項目 +\fB_exit\fP(2), \fBsetpgid\fP(2), \fBwait\fP(2), \fBatexit\fP(3), \fBon_exit\fP(3), +\fBtmpfile\fP(3) +.SH この文書について +この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.67 の一部 +である。プロジェクトの説明とバグ報告に関する情報は +http://www.kernel.org/doc/man\-pages/ に書かれている。