在我的C ++ on Windows程序中,我必须通过触发命令“java -version”来收集java版本。
我正在使用_popen API。
当我使用_popen命令触发任何Windows命令提示符命令时,_open会正确返回缓冲区中命令的输出。
char versionCmd[256] = "";
char buffer[1024];
strcpy(versionCmd, "netstat -an");
FILE *File_p = _popen(versionCmd, "r");
if (!File_p)
{
return -1;
}
while(fgets(buffer, sizeof(buffer), File_p))
{
printf("buffer = %s", buffer);
}
但是当我使用命令“java -version”运行相同的程序时,_popen不会在缓冲区中返回任何内容。
strcpy(versionCmd, "java -version");
相反,输出会在我运行此Windows程序的控制台上打印出来。
看起来命令的输出被重定向到控制台而不是缓冲区。
无论如何我可以将“java -version”命令的输出重定向到程序的缓冲区吗? 如何解决这个问题?