J'ai DLL C++ qui exécute un programme Java en utilisant JNI, et j'essaie de comprendre comment capturer la sortie de ce programme Java. J'ai essayé d'utiliser un stringstream pour rediriger la stdout vers un buffer, mais cela ne semble que capturer la sortie provenant de ma DLL. Que puis-je faire pour lire dans System.out?Comment passer System.out de Java à C en utilisant JNI?
C'est ce que je suis en train maintenant, ce qui ne fonctionne pas:
using namespace std;
stringstream buffer;
streambuf * old = cout.rdbuf(buffer.rdbuf());
//run java stuff here
Après que je fais cela, buffer.str()
est encore vide, même si les méthodes Java exécutent correctement et il y a System.out. println() appelle dans ces méthodes. Si je fais quelque chose comme cout << "test" << endl;
, le buffer.str() obtient ce texte, il ne semble pas être un problème avec le tampon. Quelles sont mes options ici?
Je vais avoir le même problème avec cela - que les choses que j'imprimer à l'aide printf() est redirigé vers le fichier. –
Ensuite, la machine virtuelle Java rouvre le stdin ... Question intéressante, je vais essayer de penser à demain encore. Je pense que vous devez le pirater d'abord du côté Java – Geoffroy