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