Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

vor dem Programm-Kill

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 02.07.2009, 17:11    Titel: vor dem Programm-Kill Antworten mit Zitat

Hallo!

Kleine Frage: Wenn ein Programm grade was am berechnen ist, reagiert es natürlich nicht auf Benutzereingaben. Wenn man es Abschießen will (unter Linux mit KILL (+PID) und unter Windows mit dem Taskmanager), hat das Programm dann keine Gelegenheit mehr, seine Daten zu retten? Oder zumindest in eine LOG-Datei zu schreiben: "17:07 - Hey, ich wurde abgeschossen!"

Unter Linux gibts das TERM-Signal.. zumindest hab ich davon gehört. Weiss aber nicht obs sowas auch unter Windows gibt oder wie man das generell abfängt und eine "notfall-Prozedur" einleitet. Gibts da was Plattformunabhängiges?
Wenn nein, wie sieht das im einzelnen unter Linux und Windows aus?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 02.07.2009, 17:16    Titel: Antworten mit Zitat

unter win udn linux gibt es die möglichkeit per "InKey()" diesen "kill" abzufangen.

Wenn du in deiner ebrechungsschleife zyklisch das "InKey()" abfragst kannst du auf das Kill ereigniss reagieren. Welche Codes da jetzt raus kommen weis ich grad nicht aus dem kopf .. aber das sollte kein prob sein mal auszuprobieren.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 02.07.2009, 17:36    Titel: Antworten mit Zitat

chr(255,107) ist "fenter schließen"...
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 02.07.2009, 21:05    Titel: Antworten mit Zitat

In der Shellscript-Programmierung existiert das Konzept von
Code:
trap

Dazu ein Beispiel:

http://beilagen.dreael.ch/QB/trap_demo.sh

In diesem Beispiel wird Strg+C, mit welchem man normalerweise Shellscripte stoppt, abgefangen...

Für C-Programmierer:
Code:
man 2 signal

Und zum Glück noch ein Beispiel aus meiner Studienzeit dazu gefunden:

http://beilagen.dreael.ch/QB/sigint.c

Übrigens kann jedes Signal, ausgenommen 9 (SIGKILL) abgefangen werden, denn -9 bedeutet ja einen Prozess direkt beenden.

=> nun ist der FreeBasic-Spezialist gefragt, der entweder einen Weg kennt, diese bei jedem UNIX/Linux vorhandene C-Standardfunktion aufzurufen oder vielleicht sogar ein hübsch :-) eingepackter Befehl kennt.

Falls letzeres noch nicht existiert, wäre doch
Code:
ON SIGNAL signalnummer% CALL Sub

etwas Passendes (Vorschlag zur Spracherweiterung ans FB-Entwicklerteam!)... ;-) Schwierigkeit wäre höchstens, eine auch für Win32 (Microsoft) portierbare Lösung zu finden, d.h. ich würde die UNIX/Linux-Signalnummer daher bewusst einkapseln in einen Satz von Signals, die jede von FB zurzeit unterstützte Plattform versteht.
_________________
Teste die PC-Sicherheit mit www.sec-check.net
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 02.07.2009, 21:44    Titel: Antworten mit Zitat

@Darel ... für Linux hab ich mal was entworfen .. siehe: http://www.freebasic-portal.de/index.php?s=code&id=88

ich weis nur nich, ob das auch für win funzt. Konnte ich nie testen


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Devilkevin
aka Kerstin


Anmeldungsdatum: 11.11.2004
Beiträge: 2532
Wohnort: nähe Mannheim

BeitragVerfasst am: 03.07.2009, 21:53    Titel: Antworten mit Zitat

Irgendjemand hat hier auch mal (vor 2jahren xD) ne Sub gepostet die beim Kill des Programms aufgerufen wird... aber habs jetzt nicht gefunden, müsstest du mal selbst suchen zwinkern
_________________
www.piratenpartei.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 04.07.2009, 11:35    Titel: Antworten mit Zitat

wie wär's mit dem DESTRUCTOR? Zunge rausstrecken
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 04.07.2009, 12:59    Titel: Antworten mit Zitat

destructor fuzt bei kill n 9 nicht.

Ein Grund warum ich TSNE_DEF_REUSER eingebaut hab hab.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz