1

我在 C++ 中有这个程序:

#include <iostream>
using namespace std;
int main()
{
char buf[50];
cin.getline(buf,49);
system(buf);
return 0;
}

当我运行并编译它并输入例如“helo”时,我的程序会打印错误:

  "helo" not found.

我可以阻止显示此错误吗?有没有办法从系统命令中禁用错误​​?

4

3 回答 3

8

您无法更改system显示错误的方式。C 和 C++ 在这方面对实现几乎没有要求,因此大部分都没有指定,以使它们尽可能灵活。

如果你想要更精确的控制,你应该使用你的运行时库或操作系统接口的功能。在 linux/unix 中尝试execvp(请参阅man execvp参考资料)或 Windows 系统的 CreateProcess 函数,它使用 Windows API,可以很好地控制错误处理和其他内容。

于 2009-01-16T19:40:44.440 回答
4

你在linux上吗?尝试输入“./hello”

如果这有效,原因是当前目录(“.”)不在搜索路径中。您必须指出已编译的程序在目录中“那里”。

或者,您可以执行类似的操作

导出路径=$PATH:。

这增加了“。” (当前目录)到搜索路径。

如果您在 Windows 上,请尝试“hello.exe”

于 2009-01-16T19:21:39.953 回答
2

如果您在 Linux 上,您可以尝试将错误输出重定向到null设备吗?

strcat(buf, "2> /dev/null");
system(buf);
于 2009-01-16T20:07:02.687 回答