From 0132185afe0a44c726cb94e27c899d97c854a611 Mon Sep 17 00:00:00 2001 From: 10195501441 <10195501441@stu.ecnu.edu.com> Date: Thu, 18 Mar 2021 17:09:37 +0800 Subject: [PATCH] test mytop --- yeeshell.c | 47 +++++++++++++++++++---------------------------- yeeshell.h | 4 ++-- 2 files changed, 21 insertions(+), 30 deletions(-) diff --git a/yeeshell.c b/yeeshell.c index c243b54..6f2e466 100644 --- a/yeeshell.c +++ b/yeeshell.c @@ -399,24 +399,28 @@ int builtin_history(char **args) int builtin_mytop() { - int memory_flag = 0, CPU_flag = 0; - memory_flag = mytop_memory(); - CPU_flag = mytop_CPU(); - if (!memory_flag) - { - return -1; - } - else if (!CPU_flag) + pid_t pid; + int cputimemode = 1; + if ((pid = fork()) < 0) { - return -2; + printf("fork error\n"); + return; } - else + if (pid == 0) { - return 1; + getkinfo(); + mytop_memory(); + get_procs(); + if (prev_proc == NULL) + { + get_procs(); + } + print_procs(prev_proc, proc, cputimemode); + exit(0); } } -int mytop_memory() +void mytop_memory() { FILE *fp = NULL; int pagesize; @@ -424,28 +428,15 @@ int mytop_memory() if ((fp = fopen("/proc/meminfo", "r")) == NULL) { - return 0; + exit(0); } fscanf(fp, "%u %lu %lu %lu", &pagesize, &total, &free, &cached); fclose(fp); - printf("memmory(KBytes):\t%ld total\t%ld free\t%ld cached\n", (pagesize * total) / 1024, (pagesize * free) / 1024, (pagesize * cached) / 1024); - - return 1; -} + printf("memory(KBytes):\t%ld total\t%ld free\t%ld cached\n", (pagesize * total) / 1024, (pagesize * free) / 1024, (pagesize * cached) / 1024); -int mytop_CPU() -{ - int cputimemode = 1; - getkinfo(); - get_procs(); - if (prev_proc == NULL) - { - get_procs(); - } - print_procs(prev_proc, proc, cputimemode); - return 0; + return; } void get_procs() diff --git a/yeeshell.h b/yeeshell.h index a5907d6..8f151f1 100644 --- a/yeeshell.h +++ b/yeeshell.h @@ -97,8 +97,8 @@ int builtin_history(char **args); int builtin_mytop(); /* mytop routine */ -int mytop_memory(); -int mytop_CPU(); +void mytop_memory(); +void mytop_CPU(); void get_procs(); void parse_dir(); void parse_file(pid_t pid);