exe-Datei aufrufen und dort Konsoleneingaben machen

Biertrinker3

Mitglied
Hallo liebes Forum,

ich habe folgendes c++-Programm
Code:
#include <cstdlib>
#include <iostream>
#include <windows.h> 

using namespace std;

int main(int argc, char *argv[])
{
    cout << "Programmauf vom Konsolenprogramm" << "\n";
    string bla;

    cin >> bla;
    
    Sleep(3000);
    
    cout << "Benutzereingabe : -" + bla + "-\n"; 

    cout << "Programmende vom Konsolenprogramm" << "\n";
    
    Sleep(2000);
    
    return EXIT_SUCCESS;
}

Dieses Programm würde ich jetzt gerne durch ein Java-Programm aufrufen. Damit das c++-Programm dabei komplett ausgeführt wird, muss natürlich mittels meinem Java-Programm die geforderte Eingabe gemacht werden. Leider scheitere ich dabei. Ich habe es bislang versucht per output-stream der ProcessBuider-Klasse zu schaffen, allerdings ohne Erfolg. Hier der Java-Code, der ohne die Eingabeaufforderung des c++-Programms funktioniert.
Java:
package programmaufruf;

import java.io.*;

public class Programmaufruf {

        public static void main(String args[]) {

        String s = null;

        try {
            
	    // run the Unix "ps -ef" command
            // using the Runtime exec method:
            Process p = Runtime.getRuntime().exec("C:\\Dev-Cpp\\testprogramm\\konsolenprogamm.exe");
            
            OutputStream out = p.getOutputStream();
            
            out.write(3116);
            
            BufferedReader stdInput = new BufferedReader(new 
                 InputStreamReader(p.getInputStream()));

            BufferedReader stdError = new BufferedReader(new 
                 InputStreamReader(p.getErrorStream()));

            // read the output from the command
            System.out.println("Here is the standard output of the command:\n");
            while ((s = stdInput.readLine()) != null) {
                System.out.println(s);
            }
            
            // read any errors from the attempted command
            System.out.println("Here is the standard error of the command (if any):\n");
            while ((s = stdError.readLine()) != null) {
                System.out.println(s);
            }
            
            System.exit(0);
        }
        catch (IOException e) {
            System.out.println("exception happened - here's what I know: ");
            e.printStackTrace();
            System.exit(-1);
        }
    }
}

Vielen Dank für Hilfansätze!!!
Thomas
 
Kenn mich mit c++ nicht aus. Musst du vllt noch nen newline mitschicken? Auch nen flush auf dem OutputStream könnte helfen.
 

Zurück
Oben