我想做什么?
我正在创建一个c ++程序,我正在检查该文件是否存在,以便在CWD(当前工作目录)中执行命令,如果不是那么bin,如果不存在那么sbin文件夹。
我在做什么?
我正在使用ifstream检查应用程序是否存在。如果创建了对象,我认为它是有效的。否则我不会。这是我所做的代码示例
string pathforCWD = argv[1];
ifstream checkFileCWD(pathforCWD.c_str());
if (!checkFileCWD) {
cout << "\nCommand not Found in working directory\n";
cout<<endl<<"";
string pathforBin = "/bin/",argv[1];
ifstream checkFileBin(pathforBin.c_str());
if(!checkFileBin)
{
cout<<"\nCommand also not found in Bin\n";
string pathforSbin = "/sbin/",argv[1];
ifstream checkFileSbin(pathforSbin.c_str());
if(!checkFileBin)
{
cout<<"\nFile also not found in sBin\n";
}
else
{
cout<<"\nCommand found in SBin directory.. Executing it."<<endl;
int response = system((orignalCommand).c_str());
programExecution(response);
}
}
else
{
cout<<"\nCommand found in Bin directory.. Executing it."<<endl;
int response = system((orignalCommand).c_str());
programExecution(response);
}
} else {
cout<<"\nCommand found in working directory.. Executing it."<<endl;
int response = system(("./" + orignalCommand).c_str());
programExecution(response);
}
我面临的问题是什么?
如果我将无效的程序名称参数传递给存在的程序。未创建当前工作目录ifstram对象,这意味着该文件不存在。但/bin/
如何。它说每次都存在该对象。即使它没有。 我做错了什么?
答案 0 :(得分:3)
以下定义并不符合您的想法:
string pathforBin = "/bin/",argv[1];
提示:您在此处声明两个名称,pathforBin
和argv
。