OSDN Git Service

638c997d6b71e8ca17e55a1eb033e55715094099
[linuxjm/LDP_man-pages.git] / release / man3 / exit.3
1 .\" Copyright (C) 2001 Andries Brouwer <aeb@cwi.nl>.
2 .\"
3 .\" Permission is granted to make and distribute verbatim copies of this
4 .\" manual provided the copyright notice and this permission notice are
5 .\" preserved on all copies.
6 .\"
7 .\" Permission is granted to copy and distribute modified versions of this
8 .\" manual under the conditions for verbatim copying, provided that the
9 .\" entire resulting derived work is distributed under the terms of a
10 .\" permission notice identical to this one.
11 .\"
12 .\" Since the Linux kernel and libraries are constantly changing, this
13 .\" manual page may be incorrect or out-of-date.  The author(s) assume no
14 .\" responsibility for errors or omissions, or for damages resulting from
15 .\" the use of the information contained herein.  The author(s) may not
16 .\" have taken the same level of care in the production of this manual,
17 .\" which is licensed free of charge, as they might when working
18 .\" professionally.
19 .\"
20 .\" Formatted or processed versions of this manual, if unaccompanied by
21 .\" the source, must acknowledge the copyright and authors of this work.
22 .\"
23 .\" Japanese Version Copyright (c) 1997 HORIMOTO Masafumi
24 .\"         all rights reserved.
25 .\" Translated 1997-09-10, HORIMOTO Masafumi
26 .\" Updated & Modified 2001-10-27, Yuichi SATO <ysato@h4.dion.ne.jp>
27 .\" Updated & Modified 2001-12-09, Yuichi SATO
28 .\" Updated & Modified 2005-09-06, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
29 .\" Updated 2007-06-18, Akihiro MOTOKI, LDP v2.57
30 .\"
31 .TH EXIT 3  2009-09-20 "Linux" "Linux Programmer's Manual"
32 .SH 名前
33 exit \- プロセスの正常終了
34 .SH 書式
35 .nf
36 .B #include <stdlib.h>
37 .sp
38 .BI "void exit(int " status );
39 .fi
40 .SH 説明
41 .BR exit ()
42 関数は、プロセスを正常に終了させ、
43 \fIstatus & 0377\fP という値を親プロセスへ返す
44 .RB ( wait (2)
45 を参照)。
46 .LP
47 .BR atexit (3)
48
49 .BR on_exit (3)
50 によって
51 登録された全ての関数は、それらが登録された順番と逆順にコールされる。
52 (登録された関数の中で
53 .BR atexit (3)
54 or
55 .BR on_exit (3)
56 を使って
57 exit 処理中に実行される追加の関数を登録することができる;
58 新規に登録された関数は、この後で実行される関数リストの先頭に
59 追加される。)
60 これらの関数の一つが返らなかった場合
61 (例えば、その関数が
62 .BR _exit (2)
63 を呼び出したり、シグナルで自分自身を kill した場合)、
64 残りの関数はどれも呼び出されず、それ以降の exit 処理
65 (特に
66 .BR stdio (3)
67 ストリームのフラッシュなど) は中止される。
68 ある関数が
69 .BR atexit (3)
70
71 .BR on_exit (3)
72 を使って複数回登録されていた場合、
73 その関数は登録されたのと同じ回数だけ呼び出される。
74 .LP
75 オープン中の
76 .BR stdio (3)
77 ストリームは全てフラッシュされて、クローズされる。
78 .BR tmpfile (3)
79 によって作成されたファイルは削除される。
80 .LP
81 C 標準では
82 .B EXIT_SUCCESS
83
84 .B EXIT_FAILURE
85 という 2つの定数が
86 定義されている。それぞれ正常終了と異常終了を示すもので、
87 .BR exit ()
88 として渡すことができる。
89 .SH 返り値
90 .BR exit ()
91 関数は返らない。
92 .SH 準拠
93 SVr4, 4.3BSD, POSIX.1-2001, C89, C99.
94 .SH 注意
95 .LP
96 .BR atexit (3)
97
98 .BR on_exit (3)
99 を使って登録された関数の中で
100 .BR exit ()
101
102 .BR longjmp (3)
103 が呼び出された場合、
104 何が起こるかは未定義である。
105 .LP
106 .B EXIT_SUCCESS
107
108 .B EXIT_FAILURE
109 を使うと、0 や (1 や \-1 といった) 0 以外の値を使うのに比べて
110 (UNIX 以外の環境に) 移植するのがいくらか簡単になる。
111 特に VMS は別の方式を用いている。
112 .LP
113 BSD は終了コードを標準化しようとしている;
114 .I <sysexits.h>
115 を参照すること。
116 .LP
117 .BR exit ()
118 の後、親プロセスに終了ステータスが渡されなければならない。
119 終了ステータスの渡し方には 3 つの場合がある。
120 親プロセスが
121 .B SA_NOCLDWAIT
122 を設定した場合、
123 または
124 .B SIGCHLD
125 ハンドラを
126 .B SIG_IGN
127 に設定した場合、
128 ステータスは破棄される。
129 親プロセスが子プロセスの終了を待っている場合、
130 親プロセスに終了ステータスが伝えられる。
131 どちらの場合でも exit のプロセスは直ちに終了する。
132 「終了ステータスを関知せず終了も待たない」
133 ということを親プロセスが指示していない場合、
134 exit プロセスは (終了ステータスを表す 1 バイトのみを保持する)
135 「ゾンビ」プロセスになる。
136 これにより、後から
137 .BR wait (2)
138 関数を呼び出すことで、
139 親プロセスは終了ステータスを知ることができる。
140 .LP
141 .B SIGCHLD
142 シグナルのサポートが実装されている場合、
143 このシグナルは親プロセスに送られる。
144 親プロセスが
145 .B SA_NOCLDWAIT
146 を設定した場合、
147 .B SIGCHLD
148 シグナルが送られるかどうかは定義されていない。
149 .LP
150 そのプロセスがセッションのリーダーで、
151 そのプロセスの制御端末がそのセッションの制御端末である場合、
152 この制御端末のフォアグラウンドプロセスグループにある
153 各プロセスに
154 .B SIGHUP
155 シグナルが送られ、端末がセッションから切り離される。
156 これにより新しい制御プロセスを取得することができる。
157 .LP
158 プロセスが終了することにより、プロセスグループが孤立して、
159 そのグループのメンバーのうちのどれかが停止した場合、
160 プロセスグループの各プロセスに対して
161 .B SIGHUP
162 シグナルが送られ、続いて
163 .B SIGCONT
164 シグナルが送られる。
165 孤立した (orphaned) プロセスグループの説明は
166 .BR setpgid (2)
167 を参照。
168 .SH 関連項目
169 .BR _exit (2),
170 .BR setpgid (2),
171 .BR wait (2),
172 .BR atexit (3),
173 .BR on_exit (3),
174 .BR tmpfile (3)