Linux下实现简易的shell

 
 
相关代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
int main()
{
char cmd[ 128];
while( 1)
{
printf( "[LJH@My_host MyShell]$ ");
fflush( stdout);
ssize_t _s = read( 0,cmd, sizeof(cmd)- 1);
if(_s > 0)
{
cmd[_s- 1]= '\0';
}
else
{
perror( "read");
exit( 1);
}
//ls -a -l -i
char *_argv[ 32];
_argv[ 0]= cmd;
int i = 1;
char *start = cmd;
while(*start)
{
if( isspace(*start))
{
*start= '\0';
start++;
_argv[i]=start;
i++;
continue;
}
start++;
}
_argv[i]= NULL;
pid_t id = fork();
if(id< 0)
{
perror( "fork");
}
else if(id== 0)
{
//child
execvp(_argv[ 0],_argv);
exit( 2);
}
else
{
//father
int status = 0;
pid_t ret=waitpid(id,&status, 0);
if(ret> 0 && WIFEXITED(status))
{
//printf("exit code:%d\n",WEXITSTATUS(status));
}
else
{
perror( "wait");
}
}
}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值