--- example-clients/capture_client.c.orig 2008-12-09 13:47:21.000000000 +0100 +++ example-clients/capture_client.c 2008-12-09 13:53:55.000000000 +0100 @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -256,11 +257,22 @@ info->can_process = 1; /* process() can start, now */ } +jack_client_t *client = NULL; + +static void +signal_handler (int sig) +{ + fprintf (stderr, "Deadly signal %i caught, aborting.\n", sig); + if (client) + jack_client_close (client); + signal (sig, SIG_DFL); + raise (sig); +} + int main (int argc, char *argv[]) { - jack_client_t *client; jack_thread_info_t thread_info; int c; int longopt_index = 0; @@ -276,6 +288,9 @@ { 0, 0, 0, 0 } }; + signal (SIGTERM, signal_handler); + signal (SIGINT, signal_handler); + memset (&thread_info, 0, sizeof (thread_info)); thread_info.rb_size = DEFAULT_RB_SIZE; opterr = 0;