•  Back 
  •  Prozessfunktionen 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Help page 
  •  Show info about hypertext 
  •  View a new file 
Topic       : TOS - das Betriebssystem
Author      : 
Version     : tos.hyp (5. März 2013)
Subject     : Programmieren/Atari
Nodes       : 3001
Index Size  : 93602
HCP-Version : 5
Compiled on : Atari
@charset    : atarist
@lang       : 
@default    : Titel
@help       : 
@options    : +g -i -s +x +zz -t4
@width      : 70
View Ref-File5.11.35  Psignal                                                   TOS

 Name:         »Psignal« - Art der Signalbehandlung verändern.

 Gemdosnummer: 274

 Deklaration:  int32_t Psignal ( int16_t sig, int32_t handler );

 Beschreibung: Die Funktion ändert die Art und Weise, wie auf das 
               Signal sig reagiert werden soll. Der Parameter handler 
               kann 3 verschiedene Werte annehmen:

                handler  Bedeutung

                0        Das Signal wird mit der Default-Aktion 
                         beantwortet.
                1        Das Signal wird ignoriert. Liegt es gerade 
                         an, so wird es gelöscht.

               Jeder andere Wert wird als die Adresse einer 
               Benutzerfunktion interpretiert, die beim Auftreten des 
               Signals sig aufgerufen wird. Dieser Funktion wird (über 
               den Stack) ein Long-Wert übergeben, welcher der 
               Signalnummer entspricht. Auf diese Art ist es möglich, 
               den Signal-Handler für mehrere Signale zu benutzen.

               Solange ein Signal bearbeitet wird, kann es nicht 
               erneut gesendet werden. Zu beachten ist ferner, daß (im 
               Gegensatz zu einigen Unix-Versionen) das Signal- 
               Handling vor der Ausführung des Handlers nicht auf den 
               Default-Handler zurückgesetzt wird.

               Der Signalhandler muß entweder mit RTS (Return to 
               Sender) beendet werden, oder Psigreturn aufrufen, um 
               anzuzeigen, daß die Signalbehandlung abgeschlossen ist. 
               Anschließend wird die Blockierung des Signals 
               aufgehoben. Psigreturn führt zusätzlich einige interne 
               Säuberungen des Kernels durch, die notwendig sind, 
               falls der Signal-Handler nicht beendet wird (longjump).

               Signalhandler können beliebige BIOS, XBIOS und GEMDOS 
               Aufrufe machen. AES- oder VDI-Aufrufe sind hingegen 
               nicht gestattet. Dies gilt jedoch nicht in MagiC; hier 
               gibt es einige Unterschiede zu beachten.

               Ein Aufruf von Psignal hat den Nebeneffekt, daß das 
               Signal demaskiert (d.h. freigegeben) wird. So kann ein 
               Prozess beim Abarbeiten eines Signals dieses 
               zurücksetzen und es sich erneut zusenden, um sich 
               beispielsweise selbst zu suspendieren, während ein 
               Signal für Job-Control bearbeitet wird. Die 
               Signalbearbeitung ist gegenüber Pfork/Pvfork 
               abgesichert.

               Signale, die von einem Prozess ignoriert werden, werden 
               auch vom Child nach einem Pexec-Aufruf ignoriert. 
               Außerdem werden Signale, die von einem Signal-Handler 
               abgefangen werden, im Child-Prozess auf den Defaultwert 
               zurückgesetzt.

 Ergebnis:     Die Funktion liefert den alten Wert des Signal-Handlers 
               zurück. Dies ist entweder 0, 1 oder die Adresse des 
               Handlers.

               Im Fehlerfall werden folgende Werte zurückgeliefert:

                EACCDN:  das Signal kann nicht abgefangen werden.
                ERANGE:  sig ist kein gültiges Signal.

 Verfügbar:    Seit der ersten in MultiTOS integrierten MiNT Version 
               1.04 und in MagiC ab der Version 4.50.

 Gruppe:       Prozessfunktionen

 Querverweis:  Binding   Pkill   Psigaction   Psigblock   Psigreturn 
               Signale