ProcessBuilder

Status
Nicht offen für weitere Antworten.

nameac

Bekanntes Mitglied
Hallo,

wenn ich mittels der Methode directory ein Verzeichnis angebe, kann der Process den ich starten möchte nicht mehr ausgeführt werden.
Code:
List<String> tshark_command = new ArrayList<String>();
	tshark_command.add("tshark");
	tshark_command.add("-i");
	tshark_command.add("en0");

builder.directory(new File("/Applications/eclipse/workspace/PerfTool/progs"));

Feher:

java.io.IOException: tshark: not found
at java.lang.UNIXProcess.forkAndExec(Native Method)
at java.lang.UNIXProcess.<init>(UNIXProcess.java:52)
at java.lang.ProcessImpl.start(ProcessImpl.java:91)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:451)
at StartCommand.run(StartCommand.java:38)
at java.lang.Thread.run(Thread.java:613)


Wenn ich es allerdings so starte:
Code:
tshark_command.add("/Applications/eclipse/workspace/PerfTool/progs/tshark");
	tshark_command.add("-i");
	tshark_command.add("en0");
        //tshark_command.add("-w");
	//tshark_command.add("tshark.txt");
       //tshark_command.add("/Applications/eclipse/workspace/PerfTool/progs/tshark.txt");

Das Problem hierbei ist aber das ich gerne mehr als nur 2 Argumente übergeben würde was auch nicht klappt. Tshark startet nicht mehr wenn ich noch andere Argumente hinzufüge.

Weiß da jemand weiter, ich kann mir das nicht erklären wo ich den Fehler suchen soll?
 

JPKI

Top Contributor
Probier mal
Code:
StringBuilder builder = new StringBuilder();
builder.add("/Applications/eclipse/workspace/PerfTool/progs/tshark ");//Leerzeichen am Ende nicht vergessen
builder.add("-weiteresArgument "); //Leerzeichen am Ende!!

Runtime.getRuntime().exec(builder.toString());
 

nameac

Bekanntes Mitglied
funzt aber ein problem hab ich noch und zwar wenn man den output von tshark in eine datei umlenken will, benutzt man
">output". jetzt könnte man mittels OutputSream die Sachen direkt in java verarbeiten, aber weil tshark die statistiken erst erstellt wenn es ein kill signal erhält heißt das das der OutputStream geschlossen ist bevor tshark die letzten Zeilen geschrieben hat.

in php kann man einen System befehl absetzen, wo ">output" interpretiert wird, geht das auch in java?
 

nameac

Bekanntes Mitglied
ich habe es mit -w output in der Argumentenliste von tshark versucht, so das er die ganzen Informationen im pcap Format speichert. Das Java Programm beendet sich noch aber tshark schließt sich nicht mehr. Warum ist das so?
 

JPKI

Top Contributor
Verstehe jetzt nicht genau, was du meinst.
Wenn du den Programmoutput in eine Datei umlenken willst, mach doch folgendes (Code ohne Garantie):
Code:
Process p = Runtime.getRuntime().exec("...");
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
PrintStream stream = new PrintStream(new FileOutputStream("datei.log"));
String s;
while ((s = reader.readLine()) != null)
 stream.println(s);
stream.close();
 

nameac

Bekanntes Mitglied
das Problem dabei ist; das tshark die Capture Statistik erst in die Datei oder in dem Fall den den Inputstream schreibt, wenn man das Signal stop Capture an tshark schickt. Bisher kenn ich nur die üblichen Signale wie kill -2 und kill -15 die den capture vorgang beenden, ist das selbe wie destroy();. Wenn man jetzt mittels destroy tshak beendet, werden vorher automatisch die In- und OutputStreams geschlossen bevor das kill signal an tshark geschickt wird, somit schreibt tshark seine statistik vll noch in den gleichen Buffer aber den kann ich nicht mehr mit dem InputStream des Processes auslesen. Ich kann nur alle Daten auslesen die vor dem kill Signal geschrieben wurden.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Super User via Processbuilder (Linux) Allgemeine Java-Themen 3
T ProcessBuilder Output Allgemeine Java-Themen 12
S Command funktioniert in Kommandzeile aber nicht mit ProcessBuilder bzw. Runtime.exec auf MAC Allgemeine Java-Themen 3
H Syntax ProcessBuilder Allgemeine Java-Themen 7
E ProcessBuilder findet Datei nicht Allgemeine Java-Themen 3
V ProcessBuilder exe file Allgemeine Java-Themen 3
D ProcessBuilder und die while() Allgemeine Java-Themen 3
L Input/Output ProcessBuilder und Windows - Konsole verbergen? Allgemeine Java-Themen 5
T ProcessBuilder (java.lang.NoClassDefFoundError) Allgemeine Java-Themen 2
G ProcessBuilder Allgemeine Java-Themen 2
B Externe Programme und ProcessBuilder Allgemeine Java-Themen 5
V Shellscript über ProcessBuilder starten Allgemeine Java-Themen 2
A ProcessBuilder Allgemeine Java-Themen 8
Y ProcessBuilder, Prozess wird gestartet, aber Anwendung nicht Allgemeine Java-Themen 5
B ProcessBuilder: kann Ordner im home nicht finden Allgemeine Java-Themen 2
W Windows XP: ProcessBuilder.start: Kommandoshell anzeigen Allgemeine Java-Themen 3
A Runtime oder ProcessBuilder exe starten Allgemeine Java-Themen 3
N ProcessBuilder Allgemeine Java-Themen 8
F ProcessBuilder - Exception Allgemeine Java-Themen 2
J Handle + ProcessBuilder: Wer sieht den Fehler? Allgemeine Java-Themen 2
D Formatierte Ausgabe vom ProcessBuilder Allgemeine Java-Themen 4
D ProcessBuilder und Scanner Probleme mit einigen Prozessen Allgemeine Java-Themen 2
F Pfadangabe bei Processbuilder Allgemeine Java-Themen 4

Ähnliche Java Themen


Oben