Shell命令编写——shell的雏形

本文介绍了一种通过输入代码来处理并执行命令行参数的方法,包括如何接收参数输入、解析参数并调用相应的命令执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
#include <stdio.h>
#include <signal.h>
#include <string.h>
#include <stdlib.h>

//命令行的参数个数
#define MAXARGS 20
//长度
#define ARGLEN  100

int main(){

 
 char *arglist[MAXARGS+1];
 int  numargs;
 char argbuf[ARGLEN];
 char *makestring();

 numargs =0 ;
 while(numargs<MAXARGS)
 {
  printf("Arg[%d]{1}quot;,numargs);

  if(fgets(argbuf,ARGLEN,stdin)&&*argbuf!='\n')
   arglist[numargs++]=makestring(argbuf);
  else{
   if(numargs>0){
    arglist[numargs]=NULL;
    execute(arglist);
    numargs = 0;
   }
  }
 
 }


 return 0;
}

int execute(char *arglist[]){
 
 execvp(arglist[0],arglist);
 perror("execvp failed");
 exit(1);
}

char *makestring(char *buf){
 
 char *cp;

 buf[strlen(buf)-1]='\0';
 cp =(char *)malloc(strlen(buf)+1);
 if(cp == NULL){
  fprintf(stderr,"no memory\n");
  exit(1);
 }

 strcpy(cp,buf);
 return cp;

}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值