… | |
… | |
1214 | } |
1214 | } |
1215 | |
1215 | |
1216 | /* Signal handlers: */ |
1216 | /* Signal handlers: */ |
1217 | |
1217 | |
1218 | void |
1218 | void |
|
|
1219 | rec_sigabrt (int i) |
|
|
1220 | { |
|
|
1221 | signal (SIGABRT, SIG_DFL); |
|
|
1222 | |
|
|
1223 | LOG (llevError, "SIGABRT received.\n"); |
|
|
1224 | cleanup ("SIGABRT received", 1); |
|
|
1225 | } |
|
|
1226 | |
|
|
1227 | void |
1219 | rec_sigsegv (int i) |
1228 | rec_sigsegv (int i) |
1220 | { |
1229 | { |
|
|
1230 | signal (SIGSEGV, SIG_DFL); |
|
|
1231 | |
1221 | LOG (llevError, "SIGSEGV received.\n"); |
1232 | LOG (llevError, "SIGSEGV received.\n"); |
1222 | cleanup ("SIGSEGV received", 1); |
1233 | cleanup ("SIGSEGV received", 1); |
1223 | } |
1234 | } |
1224 | |
1235 | |
1225 | void |
1236 | void |
1226 | rec_sigquit (int i) |
1237 | rec_sigquit (int i) |
1227 | { |
1238 | { |
|
|
1239 | signal (SIGQUIT, SIG_IGN); |
|
|
1240 | |
1228 | LOG (llevInfo, "SIGQUIT received\n"); |
1241 | LOG (llevInfo, "SIGQUIT received\n"); |
1229 | cleanup ("SIGQUIT received", 1); |
1242 | cleanup ("SIGQUIT received", 1); |
1230 | } |
1243 | } |
1231 | |
1244 | |
1232 | void |
1245 | void |
1233 | rec_sigbus (int i) |
1246 | rec_sigbus (int i) |
1234 | { |
1247 | { |
|
|
1248 | signal (SIGBUS, SIG_DFL); |
|
|
1249 | |
1235 | LOG (llevError, "SIGBUS received\n"); |
1250 | LOG (llevError, "SIGBUS received\n"); |
1236 | cleanup ("SIGBUS received", 1); |
1251 | cleanup ("SIGBUS received", 1); |
1237 | } |
1252 | } |
1238 | |
1253 | |
1239 | void |
1254 | void |
1240 | init_signals (void) |
1255 | init_signals (void) |
1241 | { |
1256 | { |
1242 | signal (SIGPIPE, SIG_IGN); |
1257 | signal (SIGPIPE, SIG_IGN); |
|
|
1258 | signal (SIGABRT, rec_sigabrt); |
1243 | signal (SIGQUIT, rec_sigquit); |
1259 | signal (SIGQUIT, rec_sigquit); |
1244 | signal (SIGSEGV, rec_sigsegv); |
1260 | signal (SIGSEGV, rec_sigsegv); |
1245 | signal (SIGBUS, rec_sigbus); |
1261 | signal (SIGBUS, rec_sigbus); |
1246 | } |
1262 | } |
1247 | |
1263 | |