ajout un fonctionnement signaux avec heredoc
This commit is contained in:
40
README.md
40
README.md
@@ -123,18 +123,40 @@ test
|
||||
|
||||
- [infos ici](https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_05_03)
|
||||
|
||||
6. un heredoc interrompu par un Ctrl-D n'arrete pas la pipeline, mais un Ctrl-C si :
|
||||
```text
|
||||
[bash]$ echo << EOF | wc
|
||||
> ^D bash: warning: here-document at line 1 delimited by end-of-file (wanted `EOF')
|
||||
1 0 1
|
||||
[bash]$ echo << EOF | wc
|
||||
> ^C
|
||||
[bash]$
|
||||
```
|
||||
|
||||
|
||||
## schema d'execution :
|
||||
```text
|
||||
_________________________________________________
|
||||
|LOOP: shell_loop() |
|
||||
| signal(SIGINT, handler) |
|
||||
| mode interactif -> readline return line_input |
|
||||
| signal(SIGINT, ignore) |
|
||||
| lexing |
|
||||
| parsing |
|
||||
| execution |
|
||||
|_________________________________________________|
|
||||
________________________________________________
|
||||
|LOOP: shell_loop() |
|
||||
| ______________________________________________ |
|
||||
||mode interactif ||
|
||||
|| *signal(SIGINT, handler)* ||
|
||||
|| readline return line_input ||
|
||||
||______________________________________________||
|
||||
| ______________________________________________ |
|
||||
||mode execution ||
|
||||
|| *signal(SIGINT, ignore)* ||
|
||||
|| ____________________________________________ ||
|
||||
||| lexing |||
|
||||
|||____________________________________________|||
|
||||
|| ____________________________________________ ||
|
||||
||| parsing |||
|
||||
|||____________________________________________|||
|
||||
|| ____________________________________________ ||
|
||||
||| execution |||
|
||||
|||____________________________________________|||
|
||||
||______________________________________________||
|
||||
|________________________________________________|
|
||||
```
|
||||
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
/* By: lperrey <lperrey@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2021/11/11 18:46:43 by lperrey #+# #+# */
|
||||
/* Updated: 2021/11/18 13:17:19 by hulamy ### ########.fr */
|
||||
/* Updated: 2021/11/18 17:17:42 by hulamy ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@@ -56,7 +56,7 @@ static int here_doc_write(char *delimiter, int doc_fd)
|
||||
{
|
||||
char *line;
|
||||
size_t line_count;
|
||||
struct sigaction signal_action;
|
||||
struct sigaction signal_action;
|
||||
|
||||
signal_action.sa_handler = sigint_handler_heredoc;
|
||||
sigaction(SIGINT, &signal_action, NULL);
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
/* By: lperrey <lperrey@student.42.fr> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2021/10/23 18:56:53 by lperrey #+# #+# */
|
||||
/* Updated: 2021/11/18 13:18:53 by hulamy ### ########.fr */
|
||||
/* Updated: 2021/11/18 17:02:16 by hulamy ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@@ -24,7 +24,7 @@ void sigint_handler_interactive(int signum)
|
||||
void sigint_handler_heredoc(int signum)
|
||||
{
|
||||
(void)signum;
|
||||
write(1, "T", 1);
|
||||
write(1, "\n", 1);
|
||||
rl_on_new_line();
|
||||
rl_replace_line("", 1);
|
||||
rl_redisplay();
|
||||
|
||||
Reference in New Issue
Block a user