maxishell
Implementation of a shell for Linux-like systems
Loading...
Searching...
No Matches
signals.c
Go to the documentation of this file.
1
/* ************************************************************************** */
2
/* */
3
/* ::: :::::::: */
4
/* signals.c :+: :+: :+: */
5
/* +:+ +:+ +:+ */
6
/* By: dmdemirk <dmdemirk@student.42london.c +#+ +:+ +#+ */
7
/* +#+#+#+#+#+ +#+ */
8
/* Created: 2024/07/17 13:59:59 by dmdemirk #+# #+# */
9
/* Updated: 2024/09/09 12:32:04 by dmdemirk ### ########.fr */
10
/* */
11
/* ************************************************************************** */
12
13
#include "
signals.h
"
14
#include <readline/readline.h>
15
#include <readline/history.h>
16
#include <unistd.h>
17
#include "
libft.h
"
18
19
void
signal_reset_prompt
(
int
signo);
20
void
set_signals_interactive
(
void
);
21
void
signal_print_newline
(
int
signal);
22
void
sigquit_ignore
(
void
);
23
void
set_signals_noninteractive
(
void
);
24
25
void
signal_reset_prompt
(
int
signo)
26
{
27
(void)signo;
28
write(1,
"\n"
, 1);
29
rl_on_new_line();
30
rl_replace_line(
""
, 0);
31
rl_redisplay();
32
}
33
34
void
signal_print_newline
(
int
signal)
35
{
36
(void)signal;
37
write(STDOUT_FILENO,
"\n"
, 1);
38
rl_on_new_line();
39
}
40
41
void
sigquit_ignore
(
void
)
42
{
43
struct
sigaction a;
44
45
sigemptyset(&a.sa_mask);
46
a.sa_flags = 0;
47
a.sa_handler = SIG_IGN;
48
sigaction(SIGQUIT, &a, NULL);
49
}
50
51
void
set_signals_interactive
(
void
)
52
{
53
struct
sigaction a;
54
55
sigquit_ignore
();
56
sigemptyset(&a.sa_mask);
57
a.sa_flags = 0;
58
a.sa_handler = *
signal_reset_prompt
;
59
a.sa_flags |= SA_RESTART;
60
sigaction(SIGINT, &a, NULL);
61
}
62
63
void
set_signals_noninteractive
(
void
)
64
{
65
struct
sigaction a;
66
67
sigemptyset(&a.sa_mask);
68
a.sa_flags = 0;
69
a.sa_handler = &
signal_print_newline
;
70
sigaction(SIGINT, &a, NULL);
71
a.sa_handler = SIG_IGN;
72
sigaction(SIGQUIT, &a, NULL);
73
}
libft.h
signal_print_newline
void signal_print_newline(int signal)
Definition
signals.c:34
signal_reset_prompt
void signal_reset_prompt(int signo)
Definition
signals.c:25
set_signals_interactive
void set_signals_interactive(void)
Definition
signals.c:51
sigquit_ignore
void sigquit_ignore(void)
Definition
signals.c:41
set_signals_noninteractive
void set_signals_noninteractive(void)
Definition
signals.c:63
signals.h
src
signals
signals.c
Generated by
1.9.8