Aktuelle Zeit: 22.05.2013 09:21

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Programm sauber beenden
BeitragVerfasst: 10.05.2011 23:03 
Offline

Registriert: 28.02.2010 14:13
Hallo...

Ich starte ein Programm mittels der RunProgram() - Funktion, das dann parallel zum Hauptprogramm laufen soll.
Dieses möchte ich dann vom Hauptprogramm aus beenden, wenn das Hauptprogramm beendet wird; allerdings soll das aufgerufene Programm normal beendet werden, nicht abgeschossen.

Soweit ich das sehe muss ein SIGTERM gesendet werden; KillProgram() sendet bestimmt SIGKILL ?!

Hat da einer einen Codeschnipsel, wie ich das machen kann? Hab da grad irgendwie keine Idee...

danke


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Programm sauber beenden
BeitragVerfasst: 10.05.2011 23:11 
Offline
Benutzeravatar

Registriert: 29.08.2004 20:11
Wohnort: Schweiz
Code:
kill_(pid, sig)

sollte gehen, wobei pid wahrscheinlich ProgramID()
und sig #SIGTERM = 15 entspricht.
Wie man die Signale abfängt, könntest du hier
raus lesen:
viewtopic.php?f=8&t=12649&hilit=signal

Kann's leider nicht testen :)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Programm sauber beenden
BeitragVerfasst: 11.05.2011 09:40 
Offline

Registriert: 28.02.2010 14:13
Danke. Funktioniert.

Nebenprogramm: (analog zu http://forums.purebasic.com/german/viewtopic.php?f=21&t=21290 )

Code:
ProcedureC on_killed_do(signum)
   PrintN("Programm killed")
   PrintN(Str(signum))
   CloseConsole()
   End
EndProcedure

signal_(2,  @on_killed_do()) ; SIGINT
signal_(3,  @on_killed_do()) ; SIGQUIT
signal_(15, @on_killed_do()) ; SIGTERM

OpenConsole()

c    = CountProgramParameters()
For a = 0 To c-1
  PrintN("Parameter: >" + ProgramParameter(a) + "<")
Next a

Print("Waiting ")
Repeat
  Print(".")
  Delay(500)
ForEver


Hauptprogramm:

Code:
;starten
eMailProg = RunProgram(BuildPath(BinPath, "email"), cmd, GetCurrentDirectory(), #PB_Program_Open)

;beenden
if IsProgram(eMailProg)
  If ProgramRunning(eMailProg)
    kill_(ProgramID(eMailProg), 15)
    CloseProgram(eMailProg)
  EndIf
EndIf


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye