Changeset 23356
- Timestamp:
- 09/05/07 11:20:21 (15 months ago)
- Location:
- trunk/launchd/src
- Files:
-
- 4 modified
-
launchd.c (modified) (4 diffs)
-
launchd_core_logic.c (modified) (1 diff)
-
launchd_runtime.c (modified) (5 diffs)
-
launchd_runtime.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/launchd/src/launchd.c
r23322 r23356 107 107 main(int argc, char *const *argv) 108 108 { 109 static const int sigigns[] = { SIGHUP, SIGINT, SIGPIPE, SIGALRM,110 SIGTERM, SIGURG, SIGTSTP, SIGTSTP, SIGCONT, SIGTTIN,111 SIGTTOU, SIGIO, SIGXCPU, SIGXFSZ, SIGVTALRM, SIGPROF,112 SIGWINCH, SIGINFO, SIGUSR1, SIGUSR2113 };114 109 bool sflag = false; 115 size_t i;116 110 int ch; 117 111 … … 137 131 launchd_runtime_init(); 138 132 139 for (i = 0; i < (sizeof(sigigns) / sizeof(int)); i++) {140 launchd_assumes(signal(sigigns[i], SIG_IGN) != SIG_ERR);141 }142 143 133 if (NULL == getenv("PATH")) { 144 134 setenv("PATH", _PATH_STDPATH, 1); … … 153 143 monitor_networking_state(); 154 144 155 156 145 if (getpid() == 1) { 157 146 handle_pid1_crashes_separately(); … … 159 148 160 149 jobmgr_init(sflag); 150 151 launchd_runtime_init2(); 161 152 162 153 launchd_runtime(); -
trunk/launchd/src/launchd_core_logic.c
r23354 r23356 2483 2483 } 2484 2484 2485 for (i = 1; i < NSIG; i++) {2486 signal(i, SIG_DFL);2487 }2488 2489 2485 if (j->quarantine_data) { 2490 2486 qtn_proc_t qp; -
trunk/launchd/src/launchd_runtime.c
r23344 r23356 55 55 #include <stdbool.h> 56 56 #include <syslog.h> 57 #include <signal.h> 57 58 #include <dlfcn.h> 58 59 … … 106 107 static void logmsg_remove(struct logmsg_s *lm); 107 108 109 110 static const int sigigns[] = { SIGHUP, SIGINT, SIGPIPE, SIGALRM, SIGTERM, 111 SIGURG, SIGTSTP, SIGTSTP, SIGCONT, SIGTTIN, SIGTTOU, SIGIO, SIGXCPU, 112 SIGXFSZ, SIGVTALRM, SIGPROF, SIGWINCH, SIGINFO, SIGUSR1, SIGUSR2 113 }; 114 static sigset_t sigign_set; 115 108 116 void 109 117 launchd_runtime_init(void) … … 142 150 runtime_openlog(getprogname(), LOG_PID|LOG_CONS, LOG_LAUNCHD); 143 151 runtime_setlogmask(LOG_UPTO(/* LOG_DEBUG */ LOG_NOTICE)); 152 } 153 154 void 155 launchd_runtime_init2(void) 156 { 157 size_t i; 158 159 for (i = 0; i < (sizeof(sigigns) / sizeof(int)); i++) { 160 sigaddset(&sigign_set, sigigns[i]); 161 launchd_assumes(signal(sigigns[i], SIG_IGN) != SIG_ERR); 162 } 144 163 } 145 164 … … 584 603 runtime_fork(mach_port_t bsport) 585 604 { 605 sigset_t emptyset, oset; 586 606 pid_t r = -1; 587 607 int saved_errno; 608 size_t i; 609 610 sigemptyset(&emptyset); 588 611 589 612 launchd_assumes(launchd_mport_make_send(bsport) == KERN_SUCCESS); … … 591 614 launchd_assumes(launchd_mport_deallocate(bsport) == KERN_SUCCESS); 592 615 616 launchd_assumes(sigprocmask(SIG_BLOCK, &sigign_set, &oset) != -1); 617 for (i = 0; i < (sizeof(sigigns) / sizeof(int)); i++) { 618 launchd_assumes(signal(sigigns[i], SIG_DFL) != SIG_ERR); 619 } 620 593 621 r = fork(); 594 595 622 saved_errno = errno; 596 623 597 624 if (r != 0) { 625 for (i = 0; i < (sizeof(sigigns) / sizeof(int)); i++) { 626 launchd_assumes(signal(sigigns[i], SIG_IGN) != SIG_ERR); 627 } 628 launchd_assumes(sigprocmask(SIG_SETMASK, &oset, NULL) != -1); 598 629 launchd_assumes(launchd_set_bport(MACH_PORT_NULL) == KERN_SUCCESS); 630 } else { 631 launchd_assumes(sigprocmask(SIG_SETMASK, &emptyset, NULL) != -1); 599 632 } 600 633 -
trunk/launchd/src/launchd_runtime.h
r23297 r23356 58 58 59 59 void launchd_runtime_init(void); 60 void launchd_runtime_init2(void); 60 61 void launchd_runtime(void) __attribute__((noreturn)); 61 62

