我使用system("java .....")
在cmd中使用VC++代码运行java应用程序。在windows中读取和写入cmd
java应用程序将在cmd中运行服务器,它将在控制台中输出信息。并且我也可以在命令中输入命令,就像在cmd中运行“dir”命令一样。
现在我想要得到我的程序中的所有输出,并使用C++代码编写发送到java应用程序的命令。
但是我发现system()
不会返回,直到我停止java应用程序。这是合理的。以及如何避免它?使用线程?
而最大的问题是我不知道如何获得输出和写入命令,任何人都可以给我一个方法吗?
非常感谢!
P.S. Java应用程序的代码无法更改。
--------------------------------------我已取得进展---- ----------------
int main()
{
char psBuffer[256];
FILE* output = _popen("java xxxx.jar", "rt");
if(output == NULL)
return 0;
while(fgets(psBuffer, 256, output))
{
printf(psBuffer);
}
if (feof(output))
{
printf("\nProcess returned %d\n", _pclose(output));
}
else
{
printf("Error: Failed to read the pipe to the end.\n");
}
system("pause");
return 0;
}
当我使用“目录”。它完美的作品!但是,当我使用Java,psBuffer始终是什么,和java的输出应用程序通常是。它的管道不能重定向java的输出?
我改变我的代码,并提出一些java命令运行完美:
FILE* output = _popen("java -version 2>&1", "rt");
但是,当它运行的.jar,它failed.I阅读的.jar的代码,并找到输出由创建java.util.logging.Logger.info()
。我不熟悉java。 info()
如何在cmd中工作?
非常感谢!
最后,我发现上面最后的代码是Java应用程序的工作correctly.But起源输出尚未重定向。它会正常显示,但缓冲区被正确接收我want.Anyway我解决我的问题,输出。感谢大家!!!
看看这个:http://justcheckingonall.wordpress.com/2008/08/29/console-window-win32-app/ – user1781290
@ user1781290这与我的问题不同。但我发现可以使用管道。 – zzy