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)
|
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
|
#if ENABLE_HUSH_JOB
|
||||||
|
|
||||||
/* Signals are grouped, we handle them in batches */
|
|
||||||
static void set_fatal_sighandler(void (*handler)(int))
|
static void set_fatal_sighandler(void (*handler)(int))
|
||||||
{
|
{
|
||||||
bb_signals(0
|
bb_signals(0
|
||||||
@ -724,14 +733,6 @@ static void set_jobctrl_sighandler(void (*handler)(int))
|
|||||||
+ (1 << SIGTTOU)
|
+ (1 << SIGTTOU)
|
||||||
, handler);
|
, 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 */
|
/* SIGCHLD is special and handled separately */
|
||||||
|
|
||||||
static void set_every_sighandler(void (*handler)(int))
|
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_fatal_sighandler(handler) ((void)0)
|
||||||
#define set_jobctrl_sighandler(handler) ((void)0)
|
#define set_jobctrl_sighandler(handler) ((void)0)
|
||||||
#define set_misc_sighandler(handler) ((void)0)
|
|
||||||
#define hush_exit(e) exit(e)
|
#define hush_exit(e) exit(e)
|
||||||
|
|
||||||
#endif /* JOB */
|
#endif /* JOB */
|
||||||
@ -3906,8 +3906,10 @@ int hush_main(int argc, char **argv)
|
|||||||
/* give up */
|
/* give up */
|
||||||
interactive_fd = 0;
|
interactive_fd = 0;
|
||||||
}
|
}
|
||||||
if (interactive_fd)
|
if (interactive_fd) {
|
||||||
fcntl(interactive_fd, F_SETFD, FD_CLOEXEC);
|
fcntl(interactive_fd, F_SETFD, FD_CLOEXEC);
|
||||||
|
set_misc_sighandler(SIG_IGN);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user