我在 C++ 中有这个程序:
#include <iostream>
using namespace std;
int main()
{
char buf[50];
cin.getline(buf,49);
system(buf);
return 0;
}
当我运行并编译它并输入例如“helo”时,我的程序会打印错误:
"helo" not found.
我可以阻止显示此错误吗?有没有办法从系统命令中禁用错误?
我在 C++ 中有这个程序:
#include <iostream>
using namespace std;
int main()
{
char buf[50];
cin.getline(buf,49);
system(buf);
return 0;
}
当我运行并编译它并输入例如“helo”时,我的程序会打印错误:
"helo" not found.
我可以阻止显示此错误吗?有没有办法从系统命令中禁用错误?
您无法更改system
显示错误的方式。C 和 C++ 在这方面对实现几乎没有要求,因此大部分都没有指定,以使它们尽可能灵活。
如果你想要更精确的控制,你应该使用你的运行时库或操作系统接口的功能。在 linux/unix 中尝试execvp
(请参阅man execvp
参考资料)或 Windows 系统的 CreateProcess 函数,它使用 Windows API,可以很好地控制错误处理和其他内容。
你在linux上吗?尝试输入“./hello”
如果这有效,原因是当前目录(“.”)不在搜索路径中。您必须指出已编译的程序在目录中“那里”。
或者,您可以执行类似的操作
导出路径=$PATH:。
这增加了“。” (当前目录)到搜索路径。
如果您在 Windows 上,请尝试“hello.exe”
如果您在 Linux 上,您可以尝试将错误输出重定向到null
设备吗?
strcat(buf, "2> /dev/null");
system(buf);