阻止以编程方式运行的系统命令的标准错误输出

我在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” 如果这样做,原因是当前目录(“。”)不在搜索路径中。您必须指明编译的程序在目录中“存在”。 或者,你可以做类似的事情 export PATH = $ PATH:。 这增加了“。” (当前目录)到搜索路径。 如果您在Windows上,请尝试“hello.exe”     
如果您使用的是Linux,可以尝试将错误输出重定向到
null
设备吗?
strcat(buf, "2> /dev/null");
system(buf);
    

要回复问题请先登录注册