Announcement

Collapse
No announcement yet.

Aufruf von externen Programmen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Aufruf von externen Programmen

    Hallo alle miteinander,

    ich arbeite gerade an einem Programm, das Dateien von einem Windows Rechner auf einen LINUX Rechner kopieren soll. Das mache ich mit PSCP.

    Der Programmaufruf sieht folgendermaßen aus:
    String progCall = "C:/Programme/PuTTY/pscp -2 -i C:/Programme/PuTTY/keys/entwicklPrivateKey.ppk C:\Programme\CopyClient\export\Doc5.tif [email protected]:/transfer/";

    Und der Quellcode dazu sieht so aus:
    Process proc = Runtime.getRuntime().exec(progCall);
    proc.waitFor();
    int exitCode = proc.exitValue();
    if (exitCode == 0)
    this.logger.debug("PSCP erfolgreich. RC=" + proc.exitValue());
    else {
    this.logger.error("PSCP fehlgeschlagen. RC=" + proc.exitValue());
    return false;
    }

    Kleine Dateien werden ganz prima kopiert. Wenn ich aber größere Dateien anbiete ( > 30MB) dann bleibt PSCP bei ca. 25 MB - 30 MB hängen. Breche ich mein Programm aber während es noch so auf das Ende von PSCP wartet ab, dann schreibt PSCP den Rest der Datei auch noch raus.

    Von wem und warum wird PSCP da angehalten? Wie kann ich das unterbinden?

  • #2
    Moin!

    Das deutet auf ein Problem mit Standard.out und Standard.err hin. Du musst ggf. aus dem Prozess die Streams (getInputStream und getErrStream) holen und über einen PipedStream (<- wichtig!) in einem extra Thread auslesen. Die Ausgabe in eine Datei umleiten und anschauen, was da so passiert.

    Einige *SCP-Programme für die Console arbeiten mit ANSI-Sequenzen für einen Fortschrittsbalken. Versuch es mit einer Option, die das abschaltet. Evtl. ist dann schon das Problem erledigt.

    Beste Grüße,
    Josch.

    Comment


    • #3
      Hi Josch,

      Es liegt tatsächlich daran, dass man bei PSCP die Ausgabe des Forschrittsbalkens deaktivieren muss. Wenn ich beim PSCP-Aufruf die Option -q (für quiet) mitgebe, funktioniert es.
      Vielen Dank auch für deinen Tipp.

      Schönen Gruß,
      Regina

      Comment

      Working...
      X