Linux终端实现自己的命令解释器----mybash

首先我们得知道Linux下产生新进程的过程是--->先复制---->再替换子进程(fork + exec)

来看代码  代码中都有解释的

下面代码实现的主要功能就是内置命令cd的简单操作和exit的作用

   #include <stdio.h>
   #include <assert.h>
   #include <stdlib.h>
   #include <string.h>
   #include <unistd.h>
   #include <sys/wait.h>
   #include <pwd.h>
   #include <dirent.h>
   
  char * get_cmd(char buff[],char * myargv[])
  {
      if(buff == NULL || myargv == NULL)
      {
          return NULL;
      }
  
      int i = 0;
      char * s = strtok(buff," ");//对命令进行分割 例如ps -f这种
      while( s!= NULL)
      {
          myargv[i++] = s;
          s = strtok(NULL," ");
      }
  
      return myargv[0];//识别输入的命令  作出对应的举动
  }
  
  
  void printf_info()  //这个函数的作用就是在执行mybash的时候前面那一行话
  {
      int id = getuid();//获取用户uid
      char* s = "$";
      if (id == 0)//当是管理员权限的时候 getuid()返回值是0
      {
          s = "#";
      }
  
      struct passwd * ptr =
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值