#include<stdio.h>
2 #include<string.h>
3 #include<unistd.h>
4 #include<stdlib.h>
5 #include<wait.h>
6 #include<dirent.h>
7 void getstring(char* buf,int size)
8 {
9 fgets(buf,size,stdin);
10 int len=strlen(buf);
11 if(buf[len-1]=='\n')
12 {
13 buf[len-1]=0;
14 }
15 }
16 int main(int argc, char** argv)
17 {
18 while(1)
19 {
20 int ret=fork();
21 if(ret>0)
22 {
23 char* username = getlogin();
24 char hostname[128] = {0};
25 char path[128] = {0};
26 gethostname(hostname,128);
27 getcwd(path,128);
28 printf("\033[1;32;10m%s@%s\033[0m:\033[1;34;10m%s\033[0m$ ",username,hostname,path);
29 fflush(stdout);
30 wait(0);
31 }
32 else if(ret==0)
33 {
34 char cmd[256]={0};
35 getstring(cmd,256);
36 char* arg[32] = {0};
37 int i=0;
38 char* res = NULL;
39 do
40 {
41 if(res==NULL)
42 {
43 res = strtok(cmd," ");
44 }
45 else
46 {
47 res = strtok(NULL," ");
48 }
49 if(res==NULL)
50 {
51 break;
52 }
53 arg[i++] = res;
54 }while(1);
55 if(strcmp(arg[0],"cd")==0)
56 {
57 if(arg[1]==0 || strcmp(arg[1],"~")==0)
58 {
59 chdir("/home/ubuntu/");
60 }
61 else
62 {
63 chdir(arg[1]);
64 }
65 }
66 else
67 {
68 execvp(arg[0],arg);
69 }
70 }
71 }
72 return 0;
73 }
2024/3/6
最新推荐文章于 2024-09-14 19:44:09 发布
这篇文章描述了一个C程序,它创建了一个简单的命令行界面,用户可以输入命令并执行,包括cd命令切换目录。程序使用fork()和wait()处理子进程和通信。
摘要由CSDN通过智能技术生成