Blame


1 cfa37a7b 2004-04-10 devnull .TH EXITS 3
2 cfa37a7b 2004-04-10 devnull .SH NAME
3 cfa37a7b 2004-04-10 devnull exits, _exits, atexit, atexitdont, terminate \- terminate process, process cleanup
4 cfa37a7b 2004-04-10 devnull .SH SYNOPSIS
5 cfa37a7b 2004-04-10 devnull .B #include <u.h>
6 cfa37a7b 2004-04-10 devnull .br
7 cfa37a7b 2004-04-10 devnull .B #include <libc.h>
8 cfa37a7b 2004-04-10 devnull .PP
9 cfa37a7b 2004-04-10 devnull .nf
10 cfa37a7b 2004-04-10 devnull .B
11 cfa37a7b 2004-04-10 devnull void _exits(char *msg)
12 cfa37a7b 2004-04-10 devnull .B
13 cfa37a7b 2004-04-10 devnull void exits(char *msg)
14 cfa37a7b 2004-04-10 devnull .PP
15 cfa37a7b 2004-04-10 devnull .B
16 cfa37a7b 2004-04-10 devnull int atexit(void(*)(void))
17 cfa37a7b 2004-04-10 devnull .PP
18 cfa37a7b 2004-04-10 devnull .B
19 cfa37a7b 2004-04-10 devnull void atexitdont(void(*)(void))
20 cfa37a7b 2004-04-10 devnull .fi
21 cfa37a7b 2004-04-10 devnull .SH DESCRIPTION
22 cfa37a7b 2004-04-10 devnull .I Exits
23 cfa37a7b 2004-04-10 devnull is the conventional way to terminate a process.
24 cfa37a7b 2004-04-10 devnull .I _Exits
25 cfa37a7b 2004-04-10 devnull is the underlying system call.
26 cfa37a7b 2004-04-10 devnull They
27 cfa37a7b 2004-04-10 devnull can never return.
28 cfa37a7b 2004-04-10 devnull .PP
29 cfa37a7b 2004-04-10 devnull .I Msg
30 cfa37a7b 2004-04-10 devnull conventionally includes a brief (maximum length
31 cfa37a7b 2004-04-10 devnull .BR ERRLEN )
32 cfa37a7b 2004-04-10 devnull explanation of the reason for
33 cfa37a7b 2004-04-10 devnull exiting, or a null pointer or empty string to indicate normal termination.
34 cfa37a7b 2004-04-10 devnull The string is passed to the parent process, prefixed by the name and process
35 cfa37a7b 2004-04-10 devnull id of the exiting process, when the parent does a
36 bf8a59fa 2004-04-11 devnull .IR wait (3).
37 cfa37a7b 2004-04-10 devnull .PP
38 cfa37a7b 2004-04-10 devnull Before calling
39 cfa37a7b 2004-04-10 devnull .I _exits
40 cfa37a7b 2004-04-10 devnull with
41 cfa37a7b 2004-04-10 devnull .I msg
42 cfa37a7b 2004-04-10 devnull as an argument,
43 cfa37a7b 2004-04-10 devnull .I exits
44 cfa37a7b 2004-04-10 devnull calls in reverse order all the functions
45 cfa37a7b 2004-04-10 devnull recorded by
46 cfa37a7b 2004-04-10 devnull .IR atexit .
47 cfa37a7b 2004-04-10 devnull .PP
48 cfa37a7b 2004-04-10 devnull .I Atexit
49 cfa37a7b 2004-04-10 devnull records
50 cfa37a7b 2004-04-10 devnull .I fn
51 cfa37a7b 2004-04-10 devnull as a function to be called by
52 cfa37a7b 2004-04-10 devnull .IR exits .
53 cfa37a7b 2004-04-10 devnull It returns zero if it failed,
54 cfa37a7b 2004-04-10 devnull nonzero otherwise.
55 cfa37a7b 2004-04-10 devnull A typical use is to register a cleanup routine for an I/O package.
56 cfa37a7b 2004-04-10 devnull To simplify programs that fork or share memory,
57 cfa37a7b 2004-04-10 devnull .I exits
58 cfa37a7b 2004-04-10 devnull only calls those
59 cfa37a7b 2004-04-10 devnull .IR atexit -registered
60 cfa37a7b 2004-04-10 devnull functions that were registered by the same
61 cfa37a7b 2004-04-10 devnull process as that calling
62 cfa37a7b 2004-04-10 devnull .IR exits .
63 cfa37a7b 2004-04-10 devnull .PP
64 cfa37a7b 2004-04-10 devnull Calling
65 cfa37a7b 2004-04-10 devnull .I atexit
66 cfa37a7b 2004-04-10 devnull twice (or more) with the same function argument causes
67 cfa37a7b 2004-04-10 devnull .I exits
68 cfa37a7b 2004-04-10 devnull to invoke the function twice (or more).
69 cfa37a7b 2004-04-10 devnull .PP
70 cfa37a7b 2004-04-10 devnull There is a limit to the number of exit functions
71 cfa37a7b 2004-04-10 devnull that will be recorded;
72 cfa37a7b 2004-04-10 devnull .I atexit
73 cfa37a7b 2004-04-10 devnull returns 0 if that limit has been reached.
74 cfa37a7b 2004-04-10 devnull .PP
75 cfa37a7b 2004-04-10 devnull .I Atexitdont
76 cfa37a7b 2004-04-10 devnull cancels a previous registration of an exit function.
77 cfa37a7b 2004-04-10 devnull .SH SOURCE
78 cfa37a7b 2004-04-10 devnull .B /sys/src/libc/port/atexit.c
79 cfa37a7b 2004-04-10 devnull .SH "SEE ALSO"
80 bf8a59fa 2004-04-11 devnull .IR fork (3),
81 bf8a59fa 2004-04-11 devnull .IR wait (3)