signals adjustements
This commit is contained in:
@@ -14,13 +14,17 @@
|
||||
|
||||
int cmd_exec_in_subshell(t_cmd *cmd, t_all *c)
|
||||
{
|
||||
struct sigaction signal_behaviour;
|
||||
|
||||
cmd->pid = fork();
|
||||
if (cmd->pid == -1)
|
||||
perror("fork()");
|
||||
if (cmd->pid == 0)
|
||||
{
|
||||
c->signal_behaviour.sa_handler = SIG_DFL;
|
||||
sigaction(SIGINT, &c->signal_behaviour, NULL);
|
||||
ft_bzero(&signal_behaviour, sizeof signal_behaviour);
|
||||
signal_behaviour.sa_handler = SIG_DFL;
|
||||
sigaction(SIGINT, &signal_behaviour, NULL);
|
||||
sigaction(SIGQUIT, &signal_behaviour, NULL);
|
||||
if (cmd->fd_in != STDIN_FILENO)
|
||||
if (dup2(cmd->fd_in, STDIN_FILENO) == -1)
|
||||
return (ft_reti_perror(EXIT_FAILURE, "dup2()"));
|
||||
|
||||
@@ -32,7 +32,7 @@ int init(t_all *c)
|
||||
c->prompt = init_prompt(c->prompt_base);
|
||||
if (!c->prompt)
|
||||
return (ft_reti_perror(0, "init_prompt() error"));
|
||||
set_signals_handling(&c->signal_behaviour);
|
||||
set_signals_behaviour();
|
||||
return (1);
|
||||
}
|
||||
|
||||
|
||||
@@ -24,23 +24,15 @@ void sigint_handler_interactive(int signum)
|
||||
void sigint_handler_heredoc(int signum)
|
||||
{
|
||||
(void)signum;
|
||||
g_switch_heredoc_sigint = 1;
|
||||
rl_done = 1;
|
||||
// write (1, rl_line_buffer, ft_strlen(rl_line_buffer) + 1);
|
||||
// rl_line_buffer = "\004";
|
||||
// write(1, "\004", 1);
|
||||
// rl_on_new_line();
|
||||
// rl_replace_line((char *)NULL, 1);
|
||||
// rl_replace_line("\004", 1);
|
||||
// rl_replace_line("", 1);
|
||||
// rl_redisplay();
|
||||
g_switch_heredoc_sigint = 1;
|
||||
}
|
||||
|
||||
int set_signals_handling(struct sigaction *signal_behaviour)
|
||||
void set_signals_behaviour(void)
|
||||
{
|
||||
signal_behaviour->sa_handler = sigint_handler_interactive;
|
||||
sigaction(SIGINT, signal_behaviour, NULL);
|
||||
signal_behaviour->sa_handler = SIG_IGN;
|
||||
sigaction(SIGQUIT, signal_behaviour, NULL);
|
||||
return (1);
|
||||
struct sigaction signal_behaviour;
|
||||
|
||||
ft_bzero(&signal_behaviour, sizeof signal_behaviour);
|
||||
signal_behaviour.sa_handler = SIG_IGN;
|
||||
sigaction(SIGQUIT, &signal_behaviour, NULL);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user