add: ctrl + c and ctrl + \
This commit is contained in:
parent
96f7108555
commit
e15216ce85
@ -1,10 +1,13 @@
|
||||
#include <signal.h>
|
||||
#include <sys/wait.h>
|
||||
#include <limits.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include "../cmd/cmd.h"
|
||||
#include <unistd.h>
|
||||
|
||||
#include "../signal/signal.h"
|
||||
#include "../cmd/cmd.h"
|
||||
#include "../env/env.h"
|
||||
#include "../utils/utils.h"
|
||||
#include "../../lib/bozolib/bozolib.h"
|
||||
@ -30,13 +33,15 @@ int execute(lst** cmds, cmd_t* cmd, lst** env)
|
||||
dup2(cmd->output[0], 1);
|
||||
dup2(cmd->input[0], 0);
|
||||
lst_iter(cmds, &cmd_close);
|
||||
signal(SIGINT, SIG_DFL);
|
||||
signal(SIGQUIT, SIG_DFL);
|
||||
execve(cmd->executable, cmd->args, env_str);
|
||||
dprintf(2, "execve failed\n");
|
||||
free((void**)env_str);
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
cmd->pid = pid;
|
||||
cmd->pid = pid;
|
||||
signal(SIGINT, SIG_IGN);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -136,5 +141,6 @@ int cmds_list_exec(lst** cmds, data_t *data)
|
||||
current = current->next;
|
||||
}
|
||||
cmds_wait(cmds, data);
|
||||
signal(SIGINT, ctrlc);
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,9 +1,12 @@
|
||||
#include "./env/env.h"
|
||||
#include "./input/input.h"
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <signal.h>
|
||||
|
||||
#include "./signal/signal.h"
|
||||
#include "./input/input.h"
|
||||
#include "alias/alias.h"
|
||||
#include "cmd/cmd.h"
|
||||
#include "./env/env.h"
|
||||
#include "./exec/exec.h"
|
||||
#include "./parsing/parsing.h"
|
||||
#include "./data/data.h"
|
||||
@ -32,6 +35,8 @@ int main(int ac, char **av, char **env_str)
|
||||
lst_clear(data.env, &env_del);
|
||||
return 1;
|
||||
}
|
||||
signal(SIGINT, ctrlc);
|
||||
signal(SIGQUIT, SIG_IGN);
|
||||
line = get_user_input(&data);
|
||||
while (line != NULL)
|
||||
{
|
||||
|
17
src/signal/signal.c
Normal file
17
src/signal/signal.c
Normal file
@ -0,0 +1,17 @@
|
||||
#include "./signal.h"
|
||||
|
||||
void ctrlc(int num)
|
||||
{
|
||||
printf("\n");
|
||||
rl_replace_line("", 0);
|
||||
rl_on_new_line();
|
||||
rl_redisplay();
|
||||
(void) num;
|
||||
}
|
||||
|
||||
void quit(int num)
|
||||
{
|
||||
(void) num;
|
||||
// printf("Quit (core dumped)\n");
|
||||
}
|
||||
|
7
src/signal/signal.h
Normal file
7
src/signal/signal.h
Normal file
@ -0,0 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdio.h>
|
||||
#include <readline/readline.h>
|
||||
|
||||
void quit(int num);
|
||||
void ctrlc(int num);
|
Loading…
Reference in New Issue
Block a user