_popen无法返回java版本

时间:2017-06-23 08:06:28

标签: c++ windows popen

在我的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”命令的输出重定向到程序的缓冲区吗? 如何解决这个问题?

0 个答案:

没有答案