阻断编程方式运行系统命令的标准误差输出
-
19-08-2019 - |
题
我有这样的程序在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 ++放很少就这方面的实现没有要求,所以它的大型部件遗留未指定的,以允许它们尽可能灵活。
如果你想更精确的控制,你应该用你的运行时库或系统操作界面的功能。尝试execvp
(见man execvp
)在Linux / UNIX或Windows系统的CreateProcess函数,它使用Windows的API,允许在错误处理和其他的东西很大的控制。
其他提示
您在Linux上?尝试键入 “./hello”
如果此方法有效,其原因在于当前目录(“”)是不是在搜索路径。你必须表明其编译的程序是“有”的目录。
另外,你可以做这样的事情。
出口PATH = $ PATH:
此将 “” (当前目录)到搜索路径。
如果您使用的是Windows,试图 “用hello.exe”
如果你是在Linux上,你可以尝试错误输出重定向到null
设备?
strcat(buf, "2> /dev/null");
system(buf);
不隶属于 StackOverflow