From 3295e0df0384b0238be1ce3812a1aae5eed8c443 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laure=CE=B7t?= Date: Tue, 20 Apr 2021 18:50:27 +0200 Subject: [PATCH] formatting --- jobs | Bin 31816 -> 32344 bytes jobs.c | 3 +- jobs.h | 10 ++- minishell | Bin 32256 -> 32352 bytes minishell.c | 175 ++++++++++++++++++++++++++++++---------------------- 5 files changed, 111 insertions(+), 77 deletions(-) diff --git a/jobs b/jobs index fbb8adf7ba6266c75ccf50fd9d78040886e33a64..c42736bc3ffd781dc38a1f26bf18438c02944025 100755 GIT binary patch delta 9452 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 VkQmrCIqGlpfeNjTi66G6|1Y78e$fB` delta 8520 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 #include +#include #include "jobs.h" void ajouter(list* l_ptr, int pid, int id) { @@ -42,8 +43,6 @@ void supprimer(list* l_ptr, int pid) { cursor->next = cursor_next; } - - } void afficher(list* l_ptr) { diff --git a/jobs.h b/jobs.h index 347c910..17d07c9 100644 --- a/jobs.h +++ b/jobs.h @@ -3,8 +3,10 @@ typedef struct cell cell; struct cell { - int pid; int id; + int pid; + int state; + char* cmd; cell* next; }; @@ -17,4 +19,8 @@ void initialiser(list* list); void liberer(list* list); int contiens(list* l_ptr, int pid); -#endif \ No newline at end of file +#endif + +// state: +// 0: running +// 1: suspended \ No newline at end of file diff --git a/minishell b/minishell index 65982dd298ee6ad17539cd910b31c20bbf48b371..8544c3371e34bb27936920ac31e1465dc0d86e6d 100755 GIT binary patch delta 7840 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 delta 7799 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 G=Kd#yryb$| diff --git a/minishell.c b/minishell.c index bbfd81d..60cd08e 100644 --- a/minishell.c +++ b/minishell.c @@ -15,88 +15,117 @@ int prompting = 0; int job_id = 1; list jobs; -void handler_print(int signal_num, siginfo_t* info) { - if (contiens(&jobs, info->si_pid)) { - if (prompting) { printf("\n"); } - printf("[%d] --> (%d) %s\n", info->si_pid, signal_num, strsignal(signal_num)); - supprimer(&jobs, info->si_pid); - job_id--; - } +void handler_print(int signal_num, siginfo_t *info) +{ + if (contiens(&jobs, info->si_pid)) + { + if (prompting) + { + printf("\n"); + } + printf("[%d] --> (%d) %s\n", info->si_pid, signal_num, strsignal(signal_num)); + supprimer(&jobs, info->si_pid); + job_id--; + } } -int main(int argc, char *argv[]) { +int main(int argc, char *argv[]) +{ - extern int errno; - - initialiser(&jobs); + extern int errno; - struct sigaction action; - action.sa_flags = SA_SIGINFO; //| SA_RESTART; - action.sa_handler = handler_print; - sigemptyset(&action.sa_mask); - sigaction(SIGCHLD, &action, NULL); + initialiser(&jobs); + struct sigaction action; + action.sa_flags = SA_SIGINFO; //| SA_RESTART; + action.sa_handler = handler_print; + sigemptyset(&action.sa_mask); + sigaction(SIGCHLD, &action, NULL); - char initcd[256], currentcd[256]; - getcwd(initcd, 256); + char initcd[256], currentcd[256]; + getcwd(initcd, 256); - while (1) { - getcwd(currentcd, 256); - printf("%s >>> ", currentcd); - prompting = 1; - struct cmdline* cmd = readcmd(); - prompting = 0; + while (1) + { + getcwd(currentcd, 256); + printf("%s >>> ", currentcd); + prompting = 1; + struct cmdline *cmd = readcmd(); + prompting = 0; - if (cmd == NULL || cmd->seq[0] == NULL) { // ligne vide, on skip - continue; - } else if (!strcmp(cmd->seq[0][0], "exit")) { // on quitte le shell - break; - } else if (!strcmp(cmd->seq[0][0], "cd")) { // cd - if (cmd->seq[0][1] == NULL) { // vide - chdir(initcd); - } else { // avec un path - chdir(cmd->seq[0][1]); - } - continue; - } else if (!strcmp(cmd->seq[0][0], "jobs")) { - afficher(&jobs); - continue; - } - - pid_t pidFils = fork(); - - if (pidFils == -1) { - fprintf(stderr, "ERROR: forking failed, %s\n", strerror(errno)); - exit(errno); - } - - if (pidFils == 0) { // fils - execvp(cmd->seq[0][0], cmd->seq[0]); - exit(errno); // si execlp échoue on exit avec une erreur - - } else { // père - if (cmd->backgrounded) { - ajouter(&jobs, pidFils, job_id++); - } else { - jmp_buf env; - setjmp(env); - int codeTerm; - pid_t idFils = waitpid(pidFils, &codeTerm, 0); // on attend la fin de l'exec du fils - - if (idFils == -1){ - - // todo : peut mieux faire ? - if (errno == 4) { - longjmp(env, 1); - } - - fprintf(stderr, "ERROR: waiting for %d failed, (%d) %s\n", codeTerm, errno, strerror(errno)); - exit(errno); + if (cmd == NULL || cmd->seq[0] == NULL) + { // ligne vide, on skip + continue; + } + else if (!strcmp(cmd->seq[0][0], "exit")) + { // on quitte le shell + break; + } + else if (!strcmp(cmd->seq[0][0], "cd")) + { // cd + if (cmd->seq[0][1] == NULL) + { // vide + chdir(initcd); + } + else + { // avec un path + chdir(cmd->seq[0][1]); + } + continue; + } + else if (!strcmp(cmd->seq[0][0], "jobs")) + { + afficher(&jobs); + continue; } - } - } - } + pid_t pidFils = fork(); - return EXIT_SUCCESS; + if (pidFils == -1) + { + fprintf(stderr, "ERROR: forking failed, %s\n", strerror(errno)); + exit(errno); + } + + if (pidFils == 0) + { // fils + int test = execvp(cmd->seq[0][0], cmd->seq[0]); + exit(errno); // si execlp échoue on exit avec une erreur + } + else // père + { + if (cmd->backgrounded) + { + ajouter(&jobs, pidFils, job_id++); + } + else + { + jmp_buf env; + setjmp(env); + + int codeTerm; + pid_t idFils = waitpid(pidFils, &codeTerm, 0); // on attend la fin de l'exec du fils + + if (idFils == -1) + { // si le wait fail + if (errno == 4) + { // todo : peut mieux faire ? + longjmp(env, 1); + } + else + { + fprintf(stderr, "ERROR: waiting for %d failed, (%d) %s\n", codeTerm, errno, strerror(errno)); + exit(errno); + } + } + + if (codeTerm) + { + fprintf(stderr, "ERROR: %d's execution failed, (%d) %s\n", pidFils, codeTerm, strerror(codeTerm)); + } + } + } + } + + return EXIT_SUCCESS; } \ No newline at end of file