diff -r 01553c2ffa1d -r baa8055c5b10 src/relpipe-out-jack.cpp --- a/src/relpipe-out-jack.cpp Tue Sep 29 20:49:04 2020 +0200 +++ b/src/relpipe-out-jack.cpp Wed Sep 30 00:34:41 2020 +0200 @@ -35,18 +35,26 @@ using namespace relpipe::reader; using namespace relpipe::out::jack; +static std::shared_ptr jackHandler = nullptr; + +void finish(int sig) { + if (jackHandler) jackHandler->finish(sig); +} + int main(int argc, char**argv) { CLI cli(argc, argv); CLI::untieStdIO(); - + int resultCode = CLI::EXIT_CODE_UNEXPECTED_ERROR; try { + signal(SIGHUP, finish); + signal(SIGINT, finish); CLIParser cliParser; Configuration configuration = cliParser.parse(cli.arguments()); std::shared_ptr reader(Factory::create(std::cin)); - JackHandler handler(configuration); - reader->addHandler(&handler); + jackHandler.reset(new JackHandler(configuration)); + reader->addHandler(jackHandler.get()); reader->process(); resultCode = CLI::EXIT_CODE_SUCCESS;