Jump to content

DosSendSignalException: Difference between revisions

From EDM2
No edit summary
Ak120 (talk | contribs)
mNo edit summary
Line 1: Line 1:
==Description==
Sends a Ctrl+C or a Ctrl+Break signal exception to another process.  
Sends a Ctrl+C or a Ctrl+Break signal exception to another process.  


Line 7: Line 6:
#include <os2.h>
#include <os2.h>


PID      pid;       /*  The identification of the process that is to receive the signal exception. */
PID      pid;
ULONG    exception; /*  The number of the signal exception to send. */
ULONG    exception;
APIRET    ulrc;       /*  Return Code. */
APIRET    ulrc;


ulrc = DosSendSignalException(pid, exception);
ulrc = DosSendSignalException(pid, exception);
</PRE>
</PRE>
==Parameters==
==Parameters==
 
;pid (PID) - input: The identification of the process that is to receive the signal exception.
; pid (PID) - input : The identification of the process that is to receive the signal exception.  
;exception (ULONG) - input: The number of the signal exception to send.
 
:Possible values are shown in the following list:
; exception (ULONG) - input : The number of the signal exception to send.
::1 XCPT_SIGNAL_INTR
Possible values are shown in the following list:
::4 XCPT_SIGNAL_BREAK
 
  1      XCPT_SIGNAL_INTR  
  4      XCPT_SIGNAL_BREAK  
 
; ulrc (APIRET) - returns: Return Code.
; ulrc (APIRET) - returns: Return Code.
DosSendSignalException returns one of the following values:
DosSendSignalException returns one of the following values:
  0              NO_ERROR  
  0              NO_ERROR  
  1              ERROR_INVALID_FUNCTION  
  1              ERROR_INVALID_FUNCTION  
Line 76: Line 70:
   return NO_ERROR;
   return NO_ERROR;
}
}
</PRE>


</PRE>
==Related Functions==
==Related Functions==
* [[OS2 API:CPI:DosAcknowledgeSignalException|DosAcknowledgeSignalException]]
* [[DosAcknowledgeSignalException]]
* [[OS2 API:CPI:DosEnterMustComplete|DosEnterMustComplete]]
* [[DosEnterMustComplete]]
* [[OS2 API:CPI:DosExitMustComplete|DosExitMustComplete]]
* [[DosExitMustComplete]]
* [[OS2 API:CPI:DosRaiseException|DosRaiseException]]
* [[DosRaiseException]]
* [[OS2 API:CPI:DosSetExceptionHandler|DosSetExceptionHandler]]
* [[DosSetExceptionHandler]]
* [[OS2 API:CPI:DosSetSignalExceptionFocus|DosSetSignalExceptionFocus]]
* [[DosSetSignalExceptionFocus]]
* [[OS2 API:CPI:DosUnsetExceptionHandler|DosUnsetExceptionHandler]]
* [[DosUnsetExceptionHandler]]
* [[OS2 API:CPI:DosUnwindException|DosUnwindException]]
* [[DosUnwindException]]
 


[[Category:The OS/2 API Project]]
[[Category:Dos]]

Revision as of 04:09, 9 January 2017

Sends a Ctrl+C or a Ctrl+Break signal exception to another process.

Syntax

#define INCL_DOSEXCEPTIONS
#include <os2.h>

PID       pid;
ULONG     exception;
APIRET    ulrc;

ulrc = DosSendSignalException(pid, exception);

Parameters

pid (PID) - input
The identification of the process that is to receive the signal exception.
exception (ULONG) - input
The number of the signal exception to send.
Possible values are shown in the following list:
1 XCPT_SIGNAL_INTR
4 XCPT_SIGNAL_BREAK
ulrc (APIRET) - returns
Return Code.

DosSendSignalException returns one of the following values:

0              NO_ERROR 
1              ERROR_INVALID_FUNCTION 
156            ERROR_SIGNAL_REFUSED 
205            ERROR_NO_SIGNAL_SENT 
209            ERROR_INVALID_SIGNAL_NUMBER 
303            ERROR_INVALID_PROCID 

Remarks

Do not make Presentation Manager calls from exception handlers.

DosSendSignalException sends either an XCPT_SIGNAL_INTR (Ctrl+C) or an XCPT_SIGNAL_BREAK (Ctrl+Break) signal exception to another process.

For a detailed list of the system exceptions, select System Exceptions.

Example Code

This example sends a signal exception to another process.

#define INCL_DOSPROCESS     /* Process and thread values */
#define INCL_DOSEXCEPTIONS  /* DOS exception values      */
#define INCL_DOSERRORS      /* DOS error values          */
#include <os2.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(USHORT argc, CHAR *argv[] ) {

   APIRET      rc          = NO_ERROR; /* Return code                        */
   PID         pidToIntr   = 0;        /* Interrupt this process             */

   if ( argc < 2 ) {
      printf("sendsig error:  Need to pass PID of thread to interrupt.\n");
      return 1;
   } else {
      pidToIntr = (PID) atoi ( argv[1] );
   } /* endif */

   rc = DosSendSignalException ( pidToIntr,            /* Process to interrupt */
                                 XCPT_SIGNAL_INTR );   /* Send this signal     */

   if (rc != NO_ERROR) {
      printf("DosSendSignalException error: return code = %u\n", rc);
      return 1;
   } else {
      printf ("DosSendSignalException complete.\n");
   } /* endif */

   return NO_ERROR;
}

Related Functions