迷你shell

在学习之余编写的迷你shell,它可以在linux环境下实现系统命令的调用和实现,希望可以帮到有用的同学。

#include <stdio.h>

#include <stdlib.h>
#include<string.h>
#include<unistd.h>
#include<wait.h>
int main(void)
{
//linux@ubuntu:~/20180113/sec2/02proc$
while(1)
{
char current_path[256]={0};
char cmd_line[256]={0};
char* arg[20]={NULL};
getcwd(current_path,256);
printf("[linux@ubuntu:%s]",current_path);
fflush(stdout);
fgets(cmd_line,256,stdin);//\n
cmd_line[strlen(cmd_line)-1]='\0';
if(cmd_line[0]=='\0') continue;
//ls\0-l
//cp 1 2
//ps aux
arg[0]=strtok(cmd_line," ");
int i = 0;
for(i=1;i<20;i++)
arg[i] = strtok(NULL," ");
//cd 123
if(0==strcmp(arg[0],"cd"))
{
if(NULL == arg[1])
chdir("/home/linux");
else
chdir(arg[1]);


continue;


}
if(0==strcmp(arg[0],"#quit"))
{
exit(0);


}
pid_t pid=fork();
if(pid>0)
{


wait(NULL);
}
if(0 == pid)
{
execvp(arg[0],arg);


exit(1);


}
if(pid<0)
{


perror("fork");
exit(1);
}
}
puts("!!!done!!!"); /* prints !!!done!!! */
return EXIT_SUCCESS;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值