#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<unistd.h>
#include<dirent.h>
#include<wait.h>
void getstring(char* buf,int size){
fgets(buf,size,stdin);
int len = strlen(buf);
if (buf[len-1]==10){
buf[len-1] = 0;
}
}
int main(int argc,char** argv){
while(1){
int ret =fork();
if(ret > 0){
char* username = getlogin();
char hostname[128] = {0};
char path[128] = {0};
gethostname(hostname,128);
getcwd(path,128);
printf("\033[1;32;10m%s@%s\033[0m:\033[1;34;10m%s\033[0m$ ",username,hostname,path);
fflush(stdout);
wait(0);
}else if(ret == 0){
char cmd[256] = {0};
getstring(cmd,256);
char* arg[32] = {0};
int i = 0;
char* res = NULL;
do{
if(res == NULL){
res = strtok(cmd," ");
}else{
res = strtok(NULL," ");
}
if(res == NULL){break;}
arg[i++] = res;
}while(1);
if(strcmp(arg[0],"cd") == 0){
if(arg[1][0] == 0 || strcmp(arg[1],"~")==0){
chdir("/home/ubuntu/");
}else{
chdir(arg[1]);
}
}else{
execvp(arg[0],arg);
}
}else{
}
}
return 0;
}
3.6作业
最新推荐文章于 2024-07-01 16:24:02 发布