| |
| | [No title] |
 | | TRACE("signaling watcher daemon to continue"); catchError(kill(CS461Daemon, SIGUSR1), -1, "signal to daemon"); // Re-establish this handler catchError((unsigned)signal(sig, CS461EventHandler), (unsigned)SIG_ERR, "CS461EventHandler setup"); } static void CS461WatcherDaemonHandler(int sig) // To avoid a race condition in send the child a signal and // recieving a response with something like select, this signal // handler deals with child responses. |
 | | CS461WatcherDaemon(); exit(0); } else { // For the child, we set up the signal handler to catch // signals from the parent (watcher daemon). |
 | | Depending on the // state of interrupts, it may call the callbacks provided bye // the higher level or update state to have them called one // interrupts are allowed once again. |
| www.cs.princeton.edu /courses/archive/spr2000/cs461/interface.c (702 words) |
|