资源简介
实验四:实现一个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
相关资源
- uboot到linux logo显示不间断 补丁
- UNIX/LINUX编程实践教程的源码
- Linux任务管理器
- linux应用层的华容道游戏源代码
- ubuntu9.10 可加载内核模块和字符设备驱
- MP3文件ID3v2ID3v2APEv2标签读取
- 操作系统实验——虚存管理实验
- linux下的发包工具sendip
- 尚观培训linux许巍关于c 的笔记和讲义
- 尚观培训linux董亮老师关于数据结构的
- linux 线程池源码 c 版
- linux C 电梯程序练习
- linux下用多进程同步方法解决生产者
- Linux 操作系统实验(全)
- Linux From Scratch 中文手册
- linux 网络实验 ftp程序
- Linux命令大全离线版&在线版
- 操作系统共享内存实验
- dos 下运行Linux 命令--gnu_utils
- linux 0.12内核源代码
- linux简易shell C实现
- linux实验报告及心得体会
- 基于GTK的Linux环境下的简易任务管理器
- linux扫雷游戏代码
- CAN Linux驱动代码
- Linux系统教材
- intel 82579LM 网卡驱动Linux系统版 v1.9.
- SA1110处理器掌上电脑液晶显示器设计
- 基于Linux的串口服务器设计
- Windows下访问LINUX的利器-SSH
评论
共有 条评论