• 大小: 3KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-05-07
  • 语言: 其他
  • 标签: 操作系统  

资源简介

1.在linux中实现一个命令执行程序doit,它执行命令行参数中的命令,之后统计 1)命令执行占用的CPU时间(包括用户态和系统态时间,以毫秒为单位), 2)命令执行的时间, 3)进程被抢占的次数, 4)进程主动放弃CPU的次数, 5)进程执行过程中发生缺页的次数

资源截图

代码片段和文件信息

#include
#include
#include 
#include
#include
#define NDEBUG
#define MAX_CMD_LEN 256//the max length of shell commands
#define MAX_TOKEN_NUM 80//the largest number of tokens
#define HOME “/“//home directory of shell
void printCwd(){/*{{{*/
long size;
char *buf;
char *cwd;
size=pathconf(“.“_PC_PATH_MAX);
if((buf=(char *)malloc((size_t)size))!=NULL)
cwd=getcwd(buf(size_t)size);
printf(“%s$“cwd);
}/*}}}*/
void myshell(){/*{{{*/
printCwd();
char cmd[MAX_CMD_LEN+1];//store a command line
char *token[MAX_TOKEN_NUM+1];//store tokens from command
int token_num;//number of tokens
int DaemonToggle=0;//daemon toggle
int i=-1;
do{
i++;
cmd[i]=getchar();
}while(cmd[i]!=‘\n‘&&i<=MAX_CMD_LEN);
cmd[i]=‘\0‘;
if(i==0){//no input
return;
}
#ifndef NDEBUG
printf(“DEBUG--%d\t\tcommand:%s\n“__LINE__cmd);
#endif
token[0]=strtok(cmd“ “);
for(i=1;token[i-1]!=NULL&&i token[i]=strtok(NULL“ “);
#ifndef NDEBUG
printf(“DEBUG--%d\t\ttoken[%d]:%s\n“__LINE__itoken[i]);
#endif
}
if(token[i-1]==NULL){
token_num=i-1;
}
else{
token[i]=NULL;
token_num=i;
}
if(strcmp(token[token_num-1]“&“)==0)
DaemonToggle=1;
else 
DaemonToggle=0;
#ifndef NDEBUG
printf(“DEBUG--%d\t\ttokens:“__LINE__);
for(i=0;token[i]!=NULL;i++)
printf(“%s “token[i]);
printf

评论

共有 条评论