hush: make it ignore SIGINT etc in a config wich has no job control
This commit is contained in:
parent
af6cca50af
commit
4830fc565a
24
shell/hush.c
24
shell/hush.c
@ -698,9 +698,18 @@ static const struct built_in_command bltins[] = {
|
||||
BLTIN(NULL, NULL, NULL)
|
||||
};
|
||||
|
||||
/* Signals are grouped, we handle them in batches */
|
||||
static void set_misc_sighandler(void (*handler)(int))
|
||||
{
|
||||
bb_signals(0
|
||||
+ (1 << SIGINT)
|
||||
+ (1 << SIGQUIT)
|
||||
+ (1 << SIGTERM)
|
||||
, handler);
|
||||
}
|
||||
|
||||
#if ENABLE_HUSH_JOB
|
||||
|
||||
/* Signals are grouped, we handle them in batches */
|
||||
static void set_fatal_sighandler(void (*handler)(int))
|
||||
{
|
||||
bb_signals(0
|
||||
@ -724,14 +733,6 @@ static void set_jobctrl_sighandler(void (*handler)(int))
|
||||
+ (1 << SIGTTOU)
|
||||
, handler);
|
||||
}
|
||||
static void set_misc_sighandler(void (*handler)(int))
|
||||
{
|
||||
bb_signals(0
|
||||
+ (1 << SIGINT)
|
||||
+ (1 << SIGQUIT)
|
||||
+ (1 << SIGTERM)
|
||||
, handler);
|
||||
}
|
||||
/* SIGCHLD is special and handled separately */
|
||||
|
||||
static void set_every_sighandler(void (*handler)(int))
|
||||
@ -814,7 +815,6 @@ static void hush_exit(int exitcode)
|
||||
|
||||
#define set_fatal_sighandler(handler) ((void)0)
|
||||
#define set_jobctrl_sighandler(handler) ((void)0)
|
||||
#define set_misc_sighandler(handler) ((void)0)
|
||||
#define hush_exit(e) exit(e)
|
||||
|
||||
#endif /* JOB */
|
||||
@ -3906,8 +3906,10 @@ int hush_main(int argc, char **argv)
|
||||
/* give up */
|
||||
interactive_fd = 0;
|
||||
}
|
||||
if (interactive_fd)
|
||||
if (interactive_fd) {
|
||||
fcntl(interactive_fd, F_SETFD, FD_CLOEXEC);
|
||||
set_misc_sighandler(SIG_IGN);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user