Changeset 751785e in git
- Timestamp:
- Jan 14, 2013, 8:16:56 PM (10 years ago)
- Branches:
- (u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'cdfcdb8287f66bc6070028082cbbc6eff10e609b')
- Children:
- d9947d272d574a169450505d43dc8ad3a5b4d0f0
- Parents:
- c251308665e937dc7f552d6681c2010dcdf1debb
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/cntrlc.cc
rc25130 r751785e 25 25 #include <kernel/polys.h> 26 26 #include <kernel/febase.h> 27 void sig_chld_hdl(int sig); /*#include <Singular/links/ssiLink.h>*/ 27 28 28 29 #include "tok.h" … … 35 36 /* undef, if you don't want GDB to come up on error */ 36 37 37 #if !defined(__alpha)38 #define CALL_GDB39 #endif40 41 38 #if defined(__OPTIMIZE__) && defined(CALL_GDB) 42 39 #undef CALL_GDB 43 40 #endif 44 41 45 #if defined(unix) && !defined(hpux)42 #if defined(unix) 46 43 #include <unistd.h> 47 44 #include <sys/types.h> … … 231 228 } 232 229 233 /*2234 * init signal handlers, linux/i386 version235 */236 void init_signals()237 {238 /*4 signal handler: linux*/239 if (SIG_ERR==si_set_signal(SIGSEGV,(si_hdl_typ)sigsegv_handler))240 {241 PrintS("cannot set signal handler for SEGV\n");242 }243 if (SIG_ERR==si_set_signal(SIGFPE, (si_hdl_typ)sigsegv_handler))244 {245 PrintS("cannot set signal handler for FPE\n");246 }247 if (SIG_ERR==si_set_signal(SIGILL, (si_hdl_typ)sigsegv_handler))248 {249 PrintS("cannot set signal handler for ILL\n");250 }251 if (SIG_ERR==si_set_signal(SIGIOT, (si_hdl_typ)sigsegv_handler))252 {253 PrintS("cannot set signal handler for IOT\n");254 }255 if (SIG_ERR==si_set_signal(SIGINT ,(si_hdl_typ)sigint_handler))256 {257 PrintS("cannot set signal handler for INT\n");258 }259 si_set_signal(SIGCHLD, (si_hdl_typ)sig_chld_hdl);260 si_set_signal(SIGPIPE, (si_hdl_typ)sig_pipe_hdl);261 si_set_signal(SIGTERM, (si_hdl_typ)sig_term_hdl);262 }263 264 230 /*---------------------------------------------------------------------*/ 265 231 #elif defined(SunOS) /*SPARC_SUNOS*/ … … 292 258 exit(0); 293 259 } 294 295 /*2296 * init signal handlers, sparc sunos 4 version297 */298 void init_signals()299 {300 /*4 signal handler:*/301 si_set_signal(SIGSEGV,sigsegv_handler);302 si_set_signal(SIGBUS, sigsegv_handler);303 si_set_signal(SIGFPE, sigsegv_handler);304 si_set_signal(SIGILL, sigsegv_handler);305 si_set_signal(SIGIOT, sigsegv_handler);306 si_set_signal(SIGINT ,sigint_handler);307 si_set_signal(SIGCHLD, (void (*)(int))SIG_IGN);308 si_set_signal(SIGPIPE, (si_hdl_typ)sig_pipe_hdl);309 }310 260 #else 311 261 … … 334 284 } 335 285 #endif /* __OPTIMIZE__ */ 336 #if defined(unix) && !defined(hpux)286 #if defined(unix) 337 287 /* debug(..) does not work under HPUX (because ptrace does not work..) */ 338 288 #ifdef CALL_GDB … … 341 291 #endif /* unix */ 342 292 exit(0); 343 }344 345 /*2346 * init signal handlers, general version347 */348 void init_signals()349 {350 /*4 signal handler:*/351 si_set_signal(SIGSEGV,(void (*) (int))sigsegv_handler);352 #ifdef SIGBUS353 si_set_signal(SIGBUS, sigsegv_handler);354 #endif /* SIGBUS */355 #ifdef SIGFPE356 si_set_signal(SIGFPE, sigsegv_handler);357 #endif /* SIGFPE */358 #ifdef SIGILL359 si_set_signal(SIGILL, sigsegv_handler);360 #endif /* SIGILL */361 #ifdef SIGIOT362 si_set_signal(SIGIOT, sigsegv_handler);363 #endif /* SIGIOT */364 #ifdef SIGXCPU365 si_set_signal(SIGXCPU, (void (*)(int))SIG_IGN);366 #endif /* SIGIOT */367 si_set_signal(SIGINT ,sigint_handler);368 #if defined(HPUX_9) || defined(HPUX_10)369 si_set_signal(SIGCHLD, (void (*)(int))SIG_IGN);370 #endif371 si_set_signal(SIGPIPE, (si_hdl_typ)sig_pipe_hdl);372 293 } 373 294 #endif … … 468 389 469 390 #ifdef unix 470 # ifndef hpux471 391 # ifndef __OPTIMIZE__ 472 392 int si_stop_stack_trace_x; … … 586 506 tv.tv_usec = 0; 587 507 588 # ifdef hpux589 sel = select (FD_SETSIZE, (int *)readset.fds_bits, NULL, NULL, &tv);590 # else /* hpux */591 508 sel = select (FD_SETSIZE, &readset, NULL, NULL, &tv); 592 # endif /* hpux */593 509 if (sel == -1) 594 510 break; … … 640 556 641 557 # endif /* !__OPTIMIZE__ */ 642 # endif /* !hpux */643 558 #endif /* unix */ 644 559 645 /* Under HPUX 9, system(...) returns -1 if SIGCHLD does not equal 646 SIG_DFL. However, if it stays at SIG_DFL we get zombie processes 647 for terminated childs generated by fork. Therefors some special treatment 648 is necessary */ 649 #ifdef HPUX_9 650 # undef system 651 extern "C" { 652 int hpux9_system(const char* call) 653 { 654 int ret; 655 si_set_signal(SIGCHLD, (void (*)(int))SIG_DFL); 656 ret = system(call); 657 si_set_signal(SIGCHLD, (void (*)(int))SIG_IGN); 658 return ret; 659 } 660 } 661 #endif /* HPUX_9 */ 560 /*2 561 * init signal handlers 562 */ 563 void init_signals() 564 { 565 si_set_signal(SIGSEGV,(si_hdl_typ)sigsegv_handler); 566 si_set_signal(SIGFPE, (si_hdl_typ)sigsegv_handler); 567 si_set_signal(SIGILL, (si_hdl_typ)sigsegv_handler); 568 si_set_signal(SIGIOT, (si_hdl_typ)sigsegv_handler); 569 si_set_signal(SIGINT ,(si_hdl_typ)sigint_handler); 570 si_set_signal(SIGCHLD, (si_hdl_typ)sig_chld_hdl); 571 si_set_signal(SIGPIPE, (si_hdl_typ)sig_pipe_hdl); 572 si_set_signal(SIGTERM, (si_hdl_typ)sig_term_hdl); 573 } 574
Note: See TracChangeset
for help on using the changeset viewer.