• 大小: 2KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-25
  • 语言: 其他
  • 标签: linux  doit  

资源简介

实验四:实现一个unix命令解释程序 1.在linux中实现一个命令执行程序doit,它执行命令行参数中的命令,之后统计 1)命令执行占用的CPU时间(包括用户态和系统态时间,以毫秒为单位), 2)命令执行的时间, 3)进程被抢占的次数, 4)进程主动放弃CPU的次数, 5)进程执行过程中发生缺页的次数 2.在linux中实现一个简单的命令解释程序,功能要求: 1)同时支持内部命令和外部命令,内部命令支持两个(cd、exit) 2)支持后台命令

资源截图

代码片段和文件信息

#include
#include
#include
#include
#include
#include
#include

void printHelp(){
printf(“程序参数格式: 命令 [该命令参数1] [该命令参数2] .... [该命令参数1]\n“);
printf(“执行完成后将会统计:\n“);
printf(“1)命令执行占用的CPU时间(包括用户态和系统态时间,以毫秒为单位)\n“);
printf(“2)命令执行的时间\n“);
printf(“3)进程被抢占的次数\n“);
printf(“4)进程主动放弃CPU的次数\n“);
printf(“5)进程执行过程中发生缺页的次数\n“);
printf(“\n“);
printf(“\n“);
}

int main(int argc char *argv[]){
printf(“input -h can get help messages\n“);
if(argc <2){
perror(“wrong command format!\n“);
exit(EXIT_FAILURE);
}
else if(strcmp(argv[1] “-h“) == 0){
printHelp();
exit(0);
}
else{
char cmd[300];
cmd[0] = ‘\0‘;

for(int i = 1;i if(i != 1)
strcat(cmd “ “);
strcat(cmd argv[i]);
}

struct timeval start_time end_time;
gettimeofday(&start_time NULL);
system(cmd);
gettimeofday(&end_time NULL);

if(errno != 0){
printf(“error: %s\n“ strerror(errno));
exit(EXIT_FAILURE);
}
else{
struct rusage ru;

memset(&ru 0 sizeof(struct rusage));
getrusage(RUSAGE_CHILDREN &ru);

long int runtime = (end_time.tv_sec - start_time.tv_sec) *1000 + (end_time.tv_usec - start_time.tv_usec)/1000;
printf(“/**************************统计结果*****************************/\n“);
printf(“1) 用户态时间:%ldms   系统态时间:%ldms  ;\n“ ru.ru_utime.tv_sec*1000 + ru.ru_utime.tv_usec/1000 ru.ru_stime.tv_sec*1000 + ru.ru_stime.tv_usec/1000);
printf(“2) 命令执行的时间:%ldms \n“runtime);
printf(“3) 进程被抢占的次数: %ld\n“ ru.ru_nivcsw);
printf(“4)进程主动放弃CPU的次数: %ld\n“ ru.ru_nvcsw);
printf(“5)进程执行过程中发生缺页的次数: %ld\n“ ru.ru_majflt);

}

}

return 0;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       1952  2016-11-18 18:48  4-2.c

     文件       1982  2016-11-17 23:46  4-1.c

----------- ---------  ---------- -----  ----

                 3934                    2


评论

共有 条评论