C++语言Linux环境下模拟实现简单命令解释器

这篇博客介绍了如何在Linux环境下使用C++语言模拟实现简单的命令解释器,包括mypwd(显示当前目录)、mylist(列出目录内容)、mycd(改变当前目录)、mymkdir(创建目录)、myrmdir(删除目录)和myexit(退出程序)等功能。通过getcwd()、chdir()、mkdir()、rmdir()和exit()等函数实现相关操作。
摘要由CSDN通过智能技术生成

C++语言Linux环境下模拟实现简单命令解释器

要求:
定义 mypwd 具有 pwd · //显示当前所在目录的路径名
定义 mylist 具有 list · //列出指定目录名中的所有目录及文件
定义 mycd 具有 cd · //改变当前工作目录
定义 mymkdir 具有 mkdir · //新建目录
定义 myrmdir 具有 rmdir · //删除目录
定义 myexit 具有 exit · //退出命令解释程序

原理:
(1)pwd功能,可以显示当前所在目录的路径名。主要使用getcwd()函数实现,其头文件为 #include<unistd…h>,getcwd()会将当前的工作目录的绝对路径复制到参数buf所指的内存空间,参数size为buf的空间大小。这个函数可以将工作目录的绝对路径复制到buf所指向的空间中,如果路径长度大于size值,就会饭毁NULL值,错误代码为ERANGE。
(2)List功能,可以列出指定目录名中的所有目录及其文件。
(3)Cd功能,可以改变当前的工作目录。主要使用了chdir()函数来实现,其头文件为:#include<unistd.h>,chdir()用来将当前的工作目录改变成以参数path所指的目录,如果执行成功就返回0,失败就返回-1。
(4)Mkdir功能,可以新建目录。调用mkdir()函数,其头文件为#include<direct.h>此函数以mode方式创建一个以参数pathname 命名的目录,mode定义新创建目录的权限。若目录创建成功,就返回0,没有创建成功的话返回-1。
(5)Rmdir功能,可以删除目录。使用rmdir()函数,其头文件为:#include<unistd.h>删除以参数dirname(代码定义此为d)为命名的目录。如果目录删除成功,就返回0,没有删除成功的话,就返回-1.
(6)Exit功能,退出命令解释程序。使用了exit()函数,其头文件为#include stdlib.h,exit(1)为异常退出程序,而exit(0)为正常退出程序。

执行命令:g++ (你文件名字).c
eg:
我的文件名是1.c,那么执行命令就是:g++ 1.c
如果g++命令之后没问题,那么就可以直接执行./a.out

#include<iostream>
#include<fstream>
#include<sys/types.h>
#include<sys/stat.h>
#include<dirent.h>
#include<stdlib.h>
#include<fcntl.h>
#include<time.h>
#include<queue>
#include<ftw.h>
#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<cstring>
#include<vector>	
using namespace std;

void mypwd();
int mylist();
void mycd();
void mymkdir();
void myrmdir();
void myexit();

void GetFileNames(string path,vector<string>& filenames)	//为了使dir运行
{
   
    DIR *pDir;
    struct dirent* ptr;
    if
  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值