模拟实现shell

本文介绍了如何使用C语言在Linux环境下模拟实现一个简单的Shell。通过获取命令行、解析命令、创建子进程、执行命令及处理提示符等步骤,详细阐述了简易Shell的工作流程,并提供了关键代码示例。
摘要由CSDN通过智能技术生成

在这里插入图片描述
这里我们可以看到,运行我们模拟实现的简易的shell之后可以像正常使用一样,在命令行上输入各种命令,来实现我们需要的功能。

shell原理

一个shell的运行大概需要分为如下几个阶段:

  1. 获取命令行
  2. 解析命令行
  3. 建立一个子进程(fork)
  4. 替换子进程(execvp)
  5. 父进程等待子进程退出(wait)
    根据这些阶段,结合之前所学的进程相关知识,我们用代码来实现一个简易的shell。

打印提示符

我们在使用Linux时候会看到在命令行上会有这样的提示符,我们在实现的过程中也需要加上这样的提示符,实现代码如下:

在这里插入图片描述

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/wait.h>
#include<string.h>



#define NUM 128
#define CMD_NUM 128

int main()
{
   
  char command[NUM];
  for(; ;)
  {
   
    char *argv[CMD_NUM] = {
    NULL };
    //1、打印提示符
    command[0]=0;//用这种方式,可以做到o(1)的时间复杂度,清空字符串
    printf("[hyx@VM-16-12-centos minishell]# ");
    fflush(stdout);
    return 0;
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值