prüfen, ob Prozess fertig mit Abarbeitung. wie?

Status
Nicht offen für weitere Antworten.

magic_halli

Bekanntes Mitglied
Hallo,

ich habe ein ziemlich komplexes Programm, an dessen Ende aus allen *.ps-Files im Verzeichnis *pdf-Files erstellt werden. Das geschieht, indem ein externes Programm von Ghostscript (ps2pdf bzw. makepdf.bat) aufgerufen wird, welches mir die ps-Files in pdf-Files umrubelt. Das klappt auch alles.

Nun möchte ich, nachdem alle pdf-Files erstellt wurden, diese Files zu einem einzigen pdf-File zusammenfassen - auch das klappt, wenn man diese entsprechende Funktion auf ein Verzeichnis losläßt, in dem bereits alle pdf-Files erstellt wurden. (siehe Post im Forum Allgemeines)

Nun soll aber diese Zusammenfassung der pdf´s in meiner Programmabarbeitung integriert werden (am Ende). Problem hierbei ist, dass ich nicht weiß, wann der Prozeß von Ghostscript mit der Erstellung aller pdf´s fertig ist. Eher kann ich kein zusammenfassendes pdf-File erstellen, da ich sonst Fehlermeldungen bekomme (wegen ArrayList und Indizes in for-Schleife usw.)!

Ich habe einfach mal spaßenshalber ein 'Thread.sleep(5000);' vor dem letzten Schritt eingefügt, aber das erscheint mir zu unsicher, da die Abarbeitungszeit des Prozesses variieren könnte bzw. dies sicher auch tut - je nach Datenmenge.


Wie kann ich da rangehen, um zu ermitteln, ob der Prozess mit seiner Arbeit am Ende ist, damit ich mit dem letzten Schritt fortfahren kann???


Danke.
 

magic_halli

Bekanntes Mitglied
Ich habe in meiner main() lediglich 2, 3 Funktionsaufrufe, die meine komplette Programmabarbeitung realisieren. Diese Funktionen rufen dann ihrerseits wieder entsprechende Funktionen auf usw...

Code:
public void main(...){
//Realisiert komplette Abarbeitung 
           if(getModelType(curSession, model) == "PART"){
        	   //pdf´s und ggf. dxf für prt erzeugen
        	   part(curSession, model);
           }
           else if(getModelType(curSession, model) == "ASSEMBLY"){
        	   //pdf´s für geöffnete asm erzeugen
        	   asm(curSession, model);
        	   //Assemblystruktur abarbeiten
        	   searchTree(curSession, model);
           }
           
           //pdf-Erstellung aus ps-Dateien im akt. Arbeitsverzeichnis
           convertPS(curSession);
             
           //mein Verzweiflungstest!!!
           Thread.sleep(5000);
           
           //kann erst ausgeführt werden, wenn convertPS(curSession) fertig ist!!!       
           summaryPDF(curSession);
}

Diese Statusabfrage des Prozesses... kann die nicht irgendwie in die main() integriert werden?
Was macht dieses 'proc.waitFor();' - auf was wartet das bitteschön?
 

magic_halli

Bekanntes Mitglied
OK, ich weiß nicht recht, wie ich das proc.waitFor(); in meiner Funktion, die den Ghostscript-Prozess startet, einbauen soll.
Hier ist mal die Funktion:
Code:
public void convertPS(Session curSession) throws jxthrowable{
    	//Array mit allen vorhandenen ps-Files im Arbeitsverzeichnis
    	ArrayList matchesPS = listPS(curSession);
    	String path = curSession.GetCurrentDirectory();
    	String psName = null;
    	String prefix = null;
    	File f = new File(path);
    		
    	//auslesen der Systemspezifikation - welches Betriebssystem wird verwendet?
    	String osName = System.getProperty("os.name");
    	osName = osName.toLowerCase();
    	//für windows oder linux unterschiedl. rt1.exec(<Kommandos>)
    	//Ghostscript MUSS installiert sein
    	if(osName.indexOf("linux") != -1){
    		prefix = "/usr/bin/ps2pdf ";
    	} else if (osName.indexOf("windows") != -1){
    		prefix = "c:/windows/makepdf.bat ";
    	}
    	try{
    		//externes Programm ps2pdf starten, mit Parametern (ps2pdf + ps-Name,null,working directory)
    		Runtime rt1 = Runtime.getRuntime();
    		for(int i = 0; i < matchesPS.size() ;i++){
    			//Dateinamen aus matchesPS auslesen
				psName = matchesPS.get(i).toString();
				rt1.exec(prefix + psName, null, f);
    		}
    	}
    	catch(IOException err){
    		System.out.println(err);
    		log(err.toString());
    	}
}
Wenn ich das richtig verstanden habe und das proc.waitFor() stünde in der Funktion, dann springt das Programm erst aus dieser Funktion wieder raus, wenn aus allen ps-Dateien pdf-Dateien erstellt wurden??? Danach würde die main() erst fortfahren - richtig?
 

magic_halli

Bekanntes Mitglied
Ahhhh... ich glaube, ich hab´s?!
Hab die for-Schleife etwas erweitert :wink:

Code:
...
for(int i = 0; i < matchesPS.size() ;i++){
             //Dateinamen aus matchesPS auslesen
            psName = matchesPS.get(i).toString();
            Process proc = rt1.exec(prefix + psName, null, f);
          }
proc.waitFor();
...
Das war´s. So läuft mein Programm durch und erstellt alles einwandfrei!

Ist das richtig, wie ich das gemacht habe???
 

HAOSK

Mitglied
fast;
nur ein Paar Bemerkungen:
1. Process proc ist nur in der for-schleife siechtbar.
2. nach der for-Schleife wartest du auf den LETZTEN proc!
 

magic_halli

Bekanntes Mitglied
Ah, ok.

Aber das macht nichts, das ich in meinem Fall auf den letzten proc warte, bis dieser fertig ist... es soll ja eh erst fortgefahren werden, wenn alle (und eben auch der letzte :wink: ) proc mit ihrer Arbeit fertig sind.

Gruß und Danke.
 

magic_halli

Bekanntes Mitglied
Ah, ok.

Aber das macht nichts, das ich in meinem Fall auf den letzten proc warte, bis dieser fertig ist... es soll ja eh erst fortgefahren werden, wenn alle (und eben auch der letzte :wink: ) proc mit ihrer Arbeit fertig sind.

Gruß und Danke.


EDIT: Sorry für den Doppelpost - da gabs nen Debugfehler beim Absenden des Posts :shock:
 

alehandro

Mitglied
magic_halli hat gesagt.:
Ah, ok.

Aber das macht nichts, das ich in meinem Fall auf den letzten proc warte, bis dieser fertig ist... es soll ja eh erst fortgefahren werden, wenn alle (und eben auch der letzte :wink: ) proc mit ihrer Arbeit fertig sind.

Und trotzdem stell Dir vor, dein vorletzter Process braucht mehr als dein letzter Prozess? Und weil der letzte schon fertig ist, gehest Du davon aus, dass alle fertig sind. Und das muss wirklich nicht so sein :-D
 

HAOSK

Mitglied
OK, wenn die Processe nicht parallen ausgeführt werden sollen.

ansonsten mach doch ein Array

Code:
Process[] proc = new Process[matchesPS.size()];
dann in der Schleife:
Code:
 proc[i]  = rt1.exec(prefix + psName, null, f);

und nach der For-Schleife eine Weitere einfühgen:
Code:
  for(int i =0; i < proc.length; i++) proc[i].waitFor();

(noch nicht ausprobiert, aber sollte funktionieren ;-)

gruß
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
Ostkreuz Int Scanner auf Enter Eingabe prüfen Java Basics - Anfänger-Themen 4
S Prüfen ob ein zweidimensionales Array rechteckig ist Java Basics - Anfänger-Themen 4
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
Fiedelbambu Prüfen von Komma stelle beim Taschenrechner Java Basics - Anfänger-Themen 5
sserio Prüfen, ob eine Zahl eine periodische Zahl ist Java Basics - Anfänger-Themen 20
I Auf vollen Monat prüfen? Java Basics - Anfänger-Themen 22
A Dateiname auf Vorkommen prüfen Java Basics - Anfänger-Themen 29
I Prüfen, ob Anzahl an Monate ein Jahr ergeben Java Basics - Anfänger-Themen 4
K Warum gibt mir z. B. 40^128 eine Zahl? Ich dachte mit xor kann man nur booleanwerte erhalten, also prüfen ob etwas whar oder falsch ist? Java Basics - Anfänger-Themen 1
W Klasse existiert prüfen Java Basics - Anfänger-Themen 5
Q Prüfen ob Zahl als Summe von Potenzen dargestellt werden kann. Java Basics - Anfänger-Themen 20
U Kann man bei Java gleich mehrere Bedingungen prüfen in der If, aber in einem "Satz"? Java Basics - Anfänger-Themen 1
O Ich ahbe einen char und diesen soll ich bei .matches prüfen, also ob der char in meiner Zeichenkette vorhanden ist, wie mache ich das? Java Basics - Anfänger-Themen 9
B Array nach Wert prüfen rekursiv Java Basics - Anfänger-Themen 5
G Strings auf Gleichheit prüfen - Aufgabe vom Prof. Java Basics - Anfänger-Themen 5
M Array auf Primzahlen prüfen Java Basics - Anfänger-Themen 7
K Wie String prüfen ob drei mal das gleiche Zeichen vorkommt? Java Basics - Anfänger-Themen 7
J ArrayList auf bereits vorhanden eintrag prüfen Java Basics - Anfänger-Themen 5
X Zwei Dimensionales Array prüfen Java Basics - Anfänger-Themen 1
B Prüfen, ob Zeit Überschreitung Java Basics - Anfänger-Themen 2
B Sudoku prüfen Java Basics - Anfänger-Themen 13
M Prüfen auf null ohne NPE Java Basics - Anfänger-Themen 1
X Array auf Leerstellen prüfen Java Basics - Anfänger-Themen 1
FelixN Prüfen, ob ein 2D-Array rechteckig ist Java Basics - Anfänger-Themen 42
C Erste Schritte JComboBox Einträge auf Duplikat prüfen Java Basics - Anfänger-Themen 4
M prüfen ob alle array werte gleich sind Java Basics - Anfänger-Themen 27
C Array auf Null-Inhalte prüfen Java Basics - Anfänger-Themen 9
B Prüfen, ob Country Code in Europa ist? Java Basics - Anfänger-Themen 24
L Prüfen ob Fax (Tif-Datei) vollständig angekommen ist Java Basics - Anfänger-Themen 15
O Datenstruktur auf SET prüfen in O(n) Java Basics - Anfänger-Themen 32
O Einzelne Bits umwandeln und prüfen Java Basics - Anfänger-Themen 23
U Mehrfacheingabe auf bestimmte Parameter prüfen Java Basics - Anfänger-Themen 8
B Prüfen, ob Datum2 der gleiche Tag ist wie Datum1 Java Basics - Anfänger-Themen 10
Dimax Erste Schritte String Eingabe Prüfen Java Basics - Anfänger-Themen 11
S char auf buchstabe/zeichen prüfen Java Basics - Anfänger-Themen 1
S Array doppelter Wert prüfen Java Basics - Anfänger-Themen 7
B Prüfen, ob es schon einen Termin gibt in einem Zeitraum Java Basics - Anfänger-Themen 5
K Linux Speicherplatz mit Java prüfen Java Basics - Anfänger-Themen 4
O Array nach gleichen Zahlen prüfen und ausgeben Java Basics - Anfänger-Themen 6
G Compiler-Fehler Auf Anagramm prüfen Java Basics - Anfänger-Themen 1
B Excel File einlesen und Überschrift prüfen Java Basics - Anfänger-Themen 8
DaCrazyJavaExpert Input/Output Prüfen wie oft etwas eingegeben wurde Java Basics - Anfänger-Themen 2
K Operatoren 2D Int Array auf Null-Referenzen prüfen Java Basics - Anfänger-Themen 18
S Prüfen ob Zelle in Excel leer ist funktioniert nicht (Apache POI) Java Basics - Anfänger-Themen 18
C Klassen Reguläre Ausdrücke auf Gleichheit prüfen Java Basics - Anfänger-Themen 5
M Erste Schritte Java prüfen ob eine der Möglichkeiten erfüllt ist Java Basics - Anfänger-Themen 2
R Auf Nachkommastellen prüfen. Java Basics - Anfänger-Themen 2
P Argumente auf plausibilität prüfen... Java Basics - Anfänger-Themen 8
F LimitedQueue auf Datum prüfen Java Basics - Anfänger-Themen 6
B Passwort prüfen bis eindeutig - while Schleife? Java Basics - Anfänger-Themen 11
Tommy Nightmare Variable auf mehrere Ungleichheiten prüfen Java Basics - Anfänger-Themen 18
B String mit Emailadresse prüfen Java Basics - Anfänger-Themen 11
E 2D Arrays auf Ungleichheit prüfen! Java Basics - Anfänger-Themen 5
MrSnake Prüfen ob TitledPane schon besteht Java Basics - Anfänger-Themen 2
B Serial Key prüfen -> String mit privatem Key und dann abgleichen; Summe = 0 Java Basics - Anfänger-Themen 8
N Compiler-Fehler Iban prüfen Java Basics - Anfänger-Themen 7
J Prüfen ob Arrays nur mit einem Wert belegt sind Java Basics - Anfänger-Themen 3
M String prüfen Java Basics - Anfänger-Themen 7
E Prüfen ob Sammlung gesetzt wurde - Lebensmittelsammlung Java Basics - Anfänger-Themen 8
H Zufällig generierte Zahlen auf Eingabe prüfen Java Basics - Anfänger-Themen 5
S Prüfen ob bestimmter Ordner geöffnet ist (Windows XP) Java Basics - Anfänger-Themen 5
Ruvok Prüfen ob bestimmtest Element existiert im Array Java Basics - Anfänger-Themen 11
DeVolt Java8 Paket Time: Datum prüfen / try-catch Java Basics - Anfänger-Themen 1
W char-Array auf bestimmte Zeichen prüfen Java Basics - Anfänger-Themen 10
S String auf Pallindromeigenschaft prüfen Java Basics - Anfänger-Themen 15
AssELAss Datums-Objekt prüfen ob im gleichen Monat? Java Basics - Anfänger-Themen 5
Screen Input/Output Wie prüfen ob Stream1 in Stream2 enthalten ist (on-the-fly) ? Java Basics - Anfänger-Themen 5
P Seite auf Inhalt prüfen Java Basics - Anfänger-Themen 2
I Prüfen ob Webseite existiert Java Basics - Anfänger-Themen 3
Z Inputs prüfen Java Basics - Anfänger-Themen 6
G Textdatei auf Dubletten prüfen Java Basics - Anfänger-Themen 8
I Prüfen von zwei Listen Java Basics - Anfänger-Themen 1
K zwei Rechtecke auf Berührung prüfen Java Basics - Anfänger-Themen 2
G String auf Format prüfen Java Basics - Anfänger-Themen 3
J Eingabewert übergeben und prüfen von showInputDialog Java Basics - Anfänger-Themen 4
L 6stellige Zufallszahlen erzeugen & auf einzigartigkeit prüfen Java Basics - Anfänger-Themen 3
S Array befüllen & auf doppelte werte prüfen Java Basics - Anfänger-Themen 6
M Prüfen, ob Zeichen eine Zahl ist Java Basics - Anfänger-Themen 3
M Punkt auf eine Farbe prüfen Java Basics - Anfänger-Themen 8
C Datentypen Prüfen of eine Zahl Quadratzahl ist Java Basics - Anfänger-Themen 2
K Eindimensionalen Array prüfen Java Basics - Anfänger-Themen 5
M Konstruktor auf null prüfen, Arrays Java Basics - Anfänger-Themen 9
O Prüfen ob ein String den selben Namen hat wie eine Booleanreihe? Java Basics - Anfänger-Themen 17
J Arrays prüfen und über if Bedingung ausgeben Java Basics - Anfänger-Themen 15
B Interface Generics: prüfen ob Interface deklariert wird Java Basics - Anfänger-Themen 18
L Erste Schritte Einträge in ArrayList prüfen Java Basics - Anfänger-Themen 4
S OOP long prüfen Java Basics - Anfänger-Themen 5
H Prüfen, ob jpg image schon vorhanden ist, bevor es geladen wird Java Basics - Anfänger-Themen 13
L Eine ArrayList auf gleiche Inhalte prüfen Java Basics - Anfänger-Themen 10
Rayo Eingelesene Ascii Zahlen wie normale Zahlen prüfen Java Basics - Anfänger-Themen 4
K HashMap auf leere Key-Value-Paare prüfen Java Basics - Anfänger-Themen 14
N Prüfen ob Objekt existiert Java Basics - Anfänger-Themen 6
I Mehrere ArrayLists mit einer for( : ) Schleife auf Inhalt prüfen Java Basics - Anfänger-Themen 6
A Prüfen ob Datei existiert Java Basics - Anfänger-Themen 9
G Verfügbare Clients prüfen ohne ping Java Basics - Anfänger-Themen 12
P JSP Werte übergeben und prüfen Java Basics - Anfänger-Themen 4
A Anfängerfrage: Zahlformat prüfen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben