Signalerkennen innerhalb einer While

weedo

Erfahrenes Mitglied
Hallo,

ich habe hier ein Programm vor mir liegen, welches in einer while eine Funktion ausführt und danach daten auswertet.

Dieses Programm läuft unter Linux. Da diese While mehrere Stunden dauern kann, möchte ich nun etwas einfügen, was die Funktion unterbindet, jedoch meine Daten, die ich bereits erstellt habe weiter ausgibt.

Ich habe mir das wie folgt gedacht:

Ich setze eine boolsche Variable. Bei einem Kill mit einem bestimmten Parameter (z.b. kill -15 <processID>) unter Linux soll er diese auf true setzen.

Meine frage ist nun, wie kann ich das innerhalb eines Programms definieren, dass wenn der Prozess gekillt wird, die Variable auf true gesetzt wird.

Hier einmal ein Auszug aus meinen Code:

Java:
    bool cancel = false;
    while (running) {
      if (cancel == false) {
        funktion();
      }
    //[...]
    }

LG weedo
 
Zuletzt bearbeitet:
Öhm ja danke erstmal :)

Ich habe vergessen zu erwähnen, dass ich eigentlich von PHP komme und erst seit gestern mit Java arbeite.

Ich habe ein paar C++ Kenntnisse aber um ehrlich zu sein, habe ich von deinem Code fast nichts verstanden. Könntest du mir das freundlicherweise etwas erklären? Was was wie wo funktioniert?

LG weedo
 
Vielen dank für dieses Script.

Nur um ehrlich zu sein, verstehe ich es nicht ganz. Wo wird geprüft, welches Signal gesendet wurde und wo wird es ausgewertet?

LG weedo

//edit ich habe jetzt einmal ein Script geschrieben, wo ich die Ausgabe "While finished..." starten möchte, bevor er fertig mit dem Durchzählen fertig ist.



Wie muss ich da jetzt was eintragen um das mit einem Kill-Signal unter Unix abfangen zu können?

Java:
package whilepckg;
import java.io.*;

public class Systemoverload {
	 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
			int whilestart = 1;
			int whileeingabe = 1;
			try { 
			    BufferedReader buffy = new BufferedReader(new InputStreamReader(System.in)); 
			    System.out.print("Times to do while: "); 
			    whileeingabe = Integer.parseInt(buffy.readLine()); 
			} 
			catch (IOException e) { 
			    System.out.println("There caused an IO Excenption!"); 
			    e.printStackTrace(); 
			} 
			catch (NumberFormatException e) { 
			    System.out.println("You didd'nt enter a number..."); 
			    System.out.println("Start While with 1.");
			}
			System.out.println("Start while with " + whileeingabe + "...");
			while (whilestart <= whileeingabe) {
				System.out.print("While in progress... Count: ");
				System.out.println( whilestart );
				whilestart++;
			}
			System.out.println("While finished... ");
	}	
}
 
Zuletzt bearbeitet:
Zurück