SIGACTIO.2
上传用户:jnzhq888
上传日期:2007-01-18
资源大小:51694k
文件大小:5k
源码类别:

操作系统开发

开发平台:

WINDOWS

  1. .TH SIGACTION 2
  2. .SH NAME
  3. sigaction, signal - manage signal state and handlers
  4. .SH SYNOPSIS
  5. .ft B
  6. #include <signal.h>
  7. .in +5
  8. .ti -5
  9. int sigaction(int fIsigfP, const struct sigaction *fIactfP, struct sigaction *fIoactfP)
  10. .in -5
  11. .br
  12. void (*signal(int fIsigfP, void (*fIhandlerfP)(int)))(int);
  13. .ft P
  14. .SH DESCRIPTION
  15. .de SP
  16. .if t .sp 0.4
  17. .if n .sp
  18. ..
  19. .B Sigaction()
  20. is used to examine, set, or modify the attributes of a signal.  The argument
  21. .I sig
  22. is the signal in question.  The
  23. .I act
  24. argument points to a structure containing the new attributes of the signal,
  25. the structure pointed to by
  26. .I oact
  27. will receive the old attributes that were in effect before the call.
  28. .PP
  29. The
  30. .I act
  31. and
  32. .I oact
  33. arguments may be
  34. .B NULL
  35. to indicate that either no new attributes are to be set, or that the old
  36. attributes are not of interest.
  37. .PP
  38. The structure containing the signal attributes is defined in <signal.h> and
  39. looks like this:
  40. .PP
  41. .RS
  42. .nf
  43. .ft B
  44. .ta +4n +12n
  45. struct sigaction {
  46. void (*sa_handler)(int sig);
  47. sigset_t sa_mask;
  48. int sa_flags;
  49. };
  50. .ft R
  51. .fi
  52. .RE
  53. .PP
  54. The
  55. .B sa_handler
  56. field contains the address of a signal handler, a function that is called
  57. when the process is signalled, or one of these special constants:
  58. .PP
  59. .TP 12
  60. .B SIG_DFL
  61. Default signal handling is to be performed.  This usually means that the
  62. process is killed, but some signals may be ignored by default.
  63. .TP
  64. .B SIG_IGN
  65. Ignore the signal.
  66. .PP
  67. The
  68. .B sa_mask
  69. field indicates a set of signals that must be blocked when the signal is
  70. being handled.  Whether the signal
  71. .I sig
  72. itself is blocked when being handled is not controlled by this mask.  The
  73. mask is of a "signal set" type that is to be manipulated by the
  74. .BR sigset (3)
  75. functions.
  76. .PP
  77. How the signal is handled precisely is specified by bits in
  78. .BR sa_flags .
  79. If none of the flags is set then the handler is called when the signal
  80. arrives.  The signal is blocked during the call to the handler, and
  81. unblocked when the handler returns.  A system call that is interrupted
  82. returns
  83. .B -1
  84. with
  85. .B errno
  86. set to
  87. .BR EINTR .
  88. The following bit flags can be set to modify this behaviour:
  89. .PP
  90. .TP 15
  91. .B SA_RESETHAND
  92. Reset the signal handler to
  93. .B SIG_DFL
  94. when the signal is caught.
  95. .TP
  96. .B SA_NODEFER
  97. Do not block the signal on entry to the handler.
  98. .TP
  99. .B SA_COMPAT
  100. Handle the signal in a way that is compatible with the the old
  101. .B signal()
  102. call.
  103. .PP
  104. The old
  105. .B signal()
  106. signal system call sets a signal handler for a given signal and returns the
  107. old signal handler.  No signals are blocked, the flags are
  108. .BR "SA_RESETHAND | SA_NODEFER | SA_COMPAT" .
  109. New code should not use
  110. .BR signal() .
  111. Note that
  112. .B signal()
  113. and all of the
  114. .B SA_*
  115. flags are Minix extensions.
  116. .PP
  117. Signal handlers are reset to
  118. .B SIG_DFL
  119. on an
  120. .BR execve (2).
  121. Signals that are ignored stay ignored.
  122. .SS Signals
  123. Minix knows about the following signals:
  124. .PP
  125. .nf
  126. .ta +11n +7n +8n
  127. signal num notes description
  128. .SP
  129. SIGHUP 1 k Hangup
  130. SIGINT 2 k Interrupt (usually DEL or CTRL-C)
  131. SIGQUIT 3 kc Quit (usually CTRL-e)
  132. SIGILL 4 kc Illegal instruction
  133. SIGTRAP 5 xkc Trace trap
  134. SIGABRT 6 kc Abort program
  135. SIGFPE 8 k Floating point exception
  136. SIGKILL 9 k Kill
  137. SIGUSR1 10 k User defined signal #1
  138. SIGSEGV 11 kc Segmentation fault
  139. SIGUSR2 12 k User defined signal #2
  140. SIGPIPE 13 k Write to a pipe with no reader
  141. SIGALRM 14 k Alarm clock
  142. SIGTERM 15 k Terminate (default for kill(1))
  143. SIGCHLD 17 pvi Child process terminated
  144. SIGCONT 18 p Continue if stopped
  145. SIGSTOP 19 ps Stop signal
  146. SIGTSTP 20 ps Interactive stop signal
  147. SIGTTIN 21 ps Background read
  148. SIGTTOU 22 ps Background write
  149. SIGWINCH 23 xvi Window size change
  150. .ft R
  151. .fi
  152. .PP
  153. The letters in the notes column indicate:
  154. .PP
  155. .TP 5
  156. .B k
  157. The process is killed if the signal is not caught.
  158. .TP
  159. .B c
  160. The signal causes a core dump.
  161. .TP
  162. .B i
  163. The signal is ignored if not caught.
  164. .TP
  165. .B v
  166. Only Minix-vmd implements this signal.
  167. .TP
  168. .B x
  169. Minix extension, not defined by s-2POSIXs+2.
  170. .TP
  171. .B p
  172. These signals are not implemented, but s-2POSIXs+2 requires that they are
  173. defined.
  174. .TP
  175. .B s
  176. The process should be stopped, but is killed instead.
  177. .PP
  178. The
  179. .B SIGKILL
  180. signal cannot be caught or ignored.  The
  181. .B SIGILL
  182. and
  183. .B SIGTRAP
  184. signals cannot be automatically reset.  The system silently enforces these
  185. restrictions.  This may or may not be reflected by the attributes of these
  186. signals and the signal masks.
  187. .SS Types
  188. s-2POSIXs+2 prescribes that <sys/types.h> has the following definition:
  189. .PP
  190. .RS
  191. .B "typedef int (*sighandler_t)(int)"
  192. .RE
  193. .PP
  194. With this type the following declarations can be made:
  195. .PP
  196. .RS
  197. .ft B
  198. .nf
  199. sighandler_t sa_handler;
  200. sighandler_t signal(int fIsigfP, sighandler_t fIhandlerfP);
  201. .fi
  202. .ft R
  203. .RE
  204. .PP
  205. This may help you to understand the earlier declarations better.  The
  206. .B sighandler_t
  207. type is also very useful in old style C code that is compiled by a compiler
  208. for standard C.
  209. .SH "SEE ALSO"
  210. .BR kill (1),
  211. .BR kill (2),
  212. .BR pause (2),
  213. .BR sigprocmask (2),
  214. .BR sigsuspend (2),
  215. .BR sigpending (2),
  216. .BR sigset (3).
  217. .SH DIAGNOSTICS
  218. .B Sigaction()
  219. returns
  220. .B 0
  221. on success or
  222. .B -1
  223. on error.
  224. .B Signal()
  225. returns the old handler on success or
  226. .B SIG_ERR
  227. on error.  The error code may be:
  228. .PP
  229. .TP 10
  230. .B EINVAL
  231. Bad signal number.
  232. .TP
  233. .B EFAULT
  234. Bad
  235. .I act
  236. or
  237. .I oact
  238. addresses.
  239. .SH AUTHOR
  240. Kees J. Bot (kjb@cs.vu.nl)