int main(int argc, char **argv) { init_cv_buffers(); context = init_kinect(); if (context == NULL) { return 1; } if (freenect_open_device(context, &device, 0) < 0) { printf("could not open device\n"); freenect_shutdown(context); return 1; } int capture_loop_failed = pthread_create(&kinect_thread, NULL, capture_loop, NULL); if (capture_loop_failed) { printf("pthread_create failed\n"); freenect_shutdown(context); return 1; } handle_sigint(); graphics_loop(argc, argv); pthread_join(kinect_thread, NULL); printf("thanks for shooting down quads!\n"); }
void check_signals(void) { if (mf_sigchld) handle_sigchld(); if (mf_sigalrm) handle_sigalrm(); if (mf_sigint) handle_sigint(); if (mf_sigquit) handle_sigquit(); if (mf_sigterm) handle_sigterm(); if (mf_sigpipe) handle_sigpipe(); if (mf_sigusr1) handle_sigusr1(); if (mf_sigusr2) handle_sigusr2(); if (mf_sighup) handle_sighup(); if (mf_stupid) { syslog(LOG_ERR,"set a signal handler,but forgot to write code to handle it"); mf_stupid = 0; } }
void* signal_handler_thread(void *p) { sigset_t sigs; sigemptyset (&sigs); sigaddset (&sigs, SIGINT); int sig; while ( !signal_handler_thread_stop) { sig = 0; sigwait(&sigs, &sig); switch(sig) { case SIGINT: handle_sigint(sig); signal_handler_thread_stop=true; break; default: std::cerr << "Got unexpected Signal (" << sig << ")" << std::endl; } } return 0; }