最近我想使用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;或者别的什么来改变目录,新线程不可能继承上下文。我的问题是,如何解决这样的问题?
答案 0 :(得分:0)
在大多数操作系统(包括1970年代的Unix)中,working directory特定于每个process。
system
函数将运行另一个进程。因此,即使您更改其工作目录,它也只会影响system
启动的进程,而不会影响运行程序的进程。
因此,您需要定义语法(可能与Windows CMD具有相同的cd
)并在您自己的程序中解析并实现该命令。您可以使用SetCurrentDirectory
或_chdir