From eb0d50371858d010f635418bfe68ad0f7721c47b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cchenyue=E2=80=9D?= <10195501438@stu.ecnu.edu.cn> Date: Wed, 17 Mar 2021 23:10:19 +0800 Subject: [PATCH] - --- fun.h | 8 +------- fun_1.c | 6 +++++- fun_2.c | 12 ++++++++++-- main | Bin 0 -> 23632 bytes main.c | 21 +++++++++++++-------- mytop.c | 8 ++------ 6 files changed, 31 insertions(+), 24 deletions(-) create mode 100755 main diff --git a/fun.h b/fun.h index 4092159..c1db301 100644 --- a/fun.h +++ b/fun.h @@ -1,15 +1,9 @@ #ifndef FUN_H_INCLUDED #define FUN_H_INCLUDED -#define MAXLINE (80) +#define MAXLINE (80) #include "fun_2.c" #include "fun_1.c" -//void history(char *cmdline); -//void print_his(char *argv); - -//void eval(char *cmdline); -//int parseline(const char *cmdline, char **argv); - #endif // FUN_H_INCLUDED diff --git a/fun_1.c b/fun_1.c index 1340cb8..c636f78 100644 --- a/fun_1.c +++ b/fun_1.c @@ -5,7 +5,11 @@ #include #include "mytop.c" -//#include "fun.h" + +int parseline(const char *cmdline, char **argv); +int builtin_cmd(char **argv); +int dup2(int fd, int arg); +int chdir(const char *path ); void eval(char *cmdline) { diff --git a/fun_2.c b/fun_2.c index b5fdeef..f8ef86e 100644 --- a/fun_2.c +++ b/fun_2.c @@ -1,7 +1,15 @@ #include -#include -//#include "fun.h" +#include + +void history(char *cmdline); +void print_his(char *argv); +int pipe(int *fd); +int fork(); +int close(int arg); +int dup(int fd); +int execvp(const char* command, char* argv[]); +int wait(int arg); static int num = 0; static char storage[MAXLINE][MAXLINE]; diff --git a/main b/main new file mode 100755 index 0000000000000000000000000000000000000000..d28b99de2283843ab4b1393af64e470ffbc24547 GIT binary patch literal 23632 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 literal 0 HcmV?d00001 diff --git a/main.c b/main.c index 492057a..9b98d35 100644 --- a/main.c +++ b/main.c @@ -1,15 +1,11 @@ #include #include #include "fun.h" + +void eval(char *cmdline); +void sigint_handler(); +pid_t getpid(void); pid_t main_proc_pid; -void sigint_handler() -{ - pid_t pid = getpid(); - if(pid != main_proc_pid) - { - exit(0); - } -} int main() { @@ -26,4 +22,13 @@ int main() history(cmdline); } return 0; +} + +void sigint_handler() +{ + pid_t pid = getpid(); + if(pid != main_proc_pid) + { + exit(0); + } } \ No newline at end of file diff --git a/mytop.c b/mytop.c index c88cc73..0e3bf60 100644 --- a/mytop.c +++ b/mytop.c @@ -1,5 +1,4 @@ -//#define mytop_h #include #include #include @@ -313,13 +312,10 @@ void get_procs(void) void getkinfo(void) { FILE *fp; - if ((fp = fopen("/proc/kinfo", "r")) == NULL) { - exit(1); } - if (fscanf(fp, "%u %u", &nr_procs, &nr_tasks) != 2) { - + if (fscanf(fp, "%u %u", &nr_procs, &nr_tasks) != 2) { exit(1); } fclose(fp); @@ -338,4 +334,4 @@ void mytop() get_procs(); print_procs(prev_proc,proc,1); return; -} \ No newline at end of file +}