是否可以知道命令是否由system(cCmdInput);
失败启动,并显示错误(如果是)。
cout << endl << "Enter command> ";
getline(cin, cmdInput);
try{
cin.clear();
const char *cCmdInput = cmdInput.c_str();
system(cCmdInput);
}catch (...){
cout << "An error occurred";
}
是否可以知道命令是否由system(cCmdInput);
失败启动,并显示错误(如果是)。
cout << endl << "Enter command> ";
getline(cin, cmdInput);
try{
cin.clear();
const char *cCmdInput = cmdInput.c_str();
system(cCmdInput);
}catch (...){
cout << "An error occurred";
}
首先,您不应该使用system()
它,因为它存在很大的安全风险(尤其是在使用来自用户的输入时,例如上面的代码)。相反,看看exec()
函数族。
但要回答你的问题,system()
不会抛出任何异常。您需要检查它返回的内容。根据文档,它通常会返回您运行的命令的状态码。您需要查找您正在使用的命令的返回代码,并system()
根据这些代码检查返回的值。通常,返回值 0 表示成功。
例如:
if(system(cCmdInput) != 0)
cout << "Error" << endl;
实际上,在 *nix 和 Windows 中,该system
函数将返回您运行的程序的进程退出代码。
因此,要运行一个表现良好的程序,只需检查结果是否为 0。按照惯例,进程退出代码 0 表示成功,任何其他值都表示失败。
但是请注意,许多 Windows 程序在生成指示错误的进程退出代码的意义上表现不佳。您可以在 Windows 命令解释器中检查这一点,最直接的是echo %errorlevel%
在运行程序之后。另一种方法是使用逻辑连接词&&
和||
,例如myprog && echo OK || echo Bah, failed!
。