Handle SIGHUP

Handle SIGHUP so that the registered exit handlers are called to restore
the terminal back to its orignal state.
This commit is contained in:
Martin Lund 2022-03-18 19:19:03 +01:00
parent ed97a8dc21
commit 03cf4ef197
4 changed files with 71 additions and 1 deletions

View file

@ -29,11 +29,15 @@
#include "log.h" #include "log.h"
#include "error.h" #include "error.h"
#include "print.h" #include "print.h"
#include "signals.h"
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
int status = 0; int status = 0;
/* Handle received signals */
signal_handlers_install();
/* Add error exit handler */ /* Add error exit handler */
atexit(&error_exit); atexit(&error_exit);

View file

@ -11,7 +11,8 @@ tio_sources = [
'misc.c', 'misc.c',
'tty.c', 'tty.c',
'print.c', 'print.c',
'configfile.c' 'configfile.c',
'signals.c'
] ]
tio_dep = dependency('inih', required: true) tio_dep = dependency('inih', required: true)

41
src/signals.c Normal file
View file

@ -0,0 +1,41 @@
/*
* tio - a simple serial terminal I/O tool
*
* Copyright (c) 2022 Martin Lund
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301, USA.
*/
#include "config.h"
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <errno.h>
#include "error.h"
#include "print.h"
#include "misc.h"
static void signal_handler(int signum)
{
UNUSED(signum);
tio_printf("Received hangup signal!");
exit(EXIT_FAILURE);
}
void signal_handlers_install(void)
{
signal(SIGHUP, signal_handler);
}

24
src/signals.h Normal file
View file

@ -0,0 +1,24 @@
/*
* tio - a simple serial terminal I/O tool
*
* Copyright (c) 2022 Martin Lund
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301, USA.
*/
#pragma once
void signal_handlers_install();