资源简介
实验四:实现一个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
相关资源
-
gsnap.tar.gz linux从fr
amebuffer获取image源 - i2c_ioctl详解
- Linux网络编程超级详细笔记
- linux tftp rpm软件包
- libssl-dev库
- 基于video4linux2的双usb摄像头图像获取
- linux网络编程教学视频
- Linux下聊天系统
- linux压力测试工具stress
- 国密SM4算法ECB CBC源码及demoLinux C版
- linux基础教程.pdf
- LINUX下传输文件源码
- 基于Linux的消息队列及多线程编程实现
- Linux操作系统实验教程源码.zip
- linux 0.11 bochs2.6.9配置文件
- socketcan提供的linux下的CAN网络工具包
- linux udev源代码
- libv4l-0.6.2-test.tar.gz
- makefile的详细说明文档
- 利用信号进行进程间通信
- Linux中的网络数据包捕获
- 基于QT+Linux的网络聊天室
- 银行家算法linux下实现
- linux下哲学家进餐问题实现
- UCloner-10.04.7.tar.gz
- linux libgcc_s.so.1 libgcc_s-4.4.5-20110214.
- uClinux-dist-20070130.tar.tar
- linux 实验7
- Linux iptables防火墙深度理解与实战应用
- makefile实验——华农Linux实验8
评论
共有 条评论