如何使用C ++构建自己的CMD?

时间:2018-02-26 06:08:16

标签: c++ cmd

最近我想使用C ++自己在Win10中增强CMD。我不想更改它的原始框架,但要翻译命令。起初我写了这样的东西:

#include <unistd.h>
#include <iostream>
#include <string>
using namespace std;
int main()
{
    string initial = "retr0@ ";
    string s;
    while(1)
    {
        cout << initial;
        getline(cin,s);
        if(s!="exit")
        {
            system(s.c_str());
            cout << "------" << endl;
        }
        else break;
    }
    system("pause");
    return 0;
}

但是我发现如果你输入的命令就像&#34; E:&#34;或者别的什么来改变目录,新线程不可能继承上下文。我的问题是,如何解决这样的问题?

1 个答案:

答案 0 :(得分:0)

在大多数操作系统(包括1970年代的Unix)中,working directory特定于每个process

system函数将运行另一个进程。因此,即使您更改其工作目录,它也只会影响system启动的进程,而不会影响运行程序的进程。

因此,您需要定义语法(可能与Windows CMD具有相同的cd)并在您自己的程序中解析并实现该命令。您可以使用SetCurrentDirectory_chdir