HP 3000 Manuals

Deleting Processes [ Process Management Programmer's Guide ] MPE/iX 5.0 Documentation


Process Management Programmer's Guide

Deleting Processes 

MPE XL provides intrinsics that enable your program to delete itself
and/or other processes.  You may wish to delete a process because:

 *  It has accomplished its task (use the TERMINATE or KILL intrinsics).

 *  It has reached an error condition (use the QUIT or QUITPROG
    intrinsics).

When your program directs MPE XL to delete a process, MPE XL uses the
algorithm illustrated in Figure 2-1 to delete a process.  When your
program deletes a process, MPE XL also searches for and deletes all of
the process's descendants (children, grandchildren, and so forth ).  In
addition, the operating system accomplishes the following tasks:

 *  All files opened by the process are closed and assigned the same
    disposition they had when opened (as if the FCLOSE intrinsic had been
    called with a disposition of zero).

 *  All system resources reserved for that process (including the data
    area, process control block, and PIN) are returned to MPE XL and made
    available for use by other processes.

The following sections describe how your program can delete itself and/or
another process using these intrinsics:

 *  TERMINATE

 *  KILL

 *  QUIT

 *  QUITPROG

Deleting a Process with TERMINATE 

Your program can call the TERMINATE intrinsic to delete itself.  The
following is an example of a TERMINATE intrinsic call:

     TERMINATE;

MPE XL deletes the process by following the algorithm described in
"Deleting Processes" .

[]
Figure 2-1. MPE XL Algorithm for Process Deletion Deleting a Child Process with KILL (PH Capability Required) If your program has PH capability, it can call the KILL intrinsic to delete a child process. An example of a KILL intrinsic call is: KILL (PIN); PIN specifies the Process Identification Number of the child process to be deleted from the system. MPE XL deletes the process by following the algorithm described in "Deleting Processes" . Aborting a Process When your program has reached what you (the programmer) have defined as an error condition, you may wish to delete it from the system. In addition, you want to be notified that MPE XL deleted the calling process in an error condition (aborted). The QUIT intrinsic accomplishes this task by: 1. Transmitting an abort message to $STDLIST 2. Setting your job/session Job Control Word (JCW) to an error state 3. Directing MPE XL to delete the calling process, following the algorithm described in "Deleting Processes" The following is an example of a QUIT intrinsic call: QUIT (NUM); The NUM parameter is transmitted to $STDLIST as part of the abort message. You can use this number to assist you in determining the state of the calling process when the abort occurred. In a session, your Root CI remains active even after the entire program finishes. In a batch job, the job terminates as soon as the entire program finishes, unless the :CONTINUE command is in effect. Aborting the Entire User Process Structure Your program can call the QUITPROG intrinsic to abort your entire user process structure (all processes below the Root CI). The QUITPROG intrinsic functions similarly to the QUIT intrinsic. The only difference is that when your program calls QUITPROG, MPE XL deletes the entire user process structure (not just the calling process, as is the case with QUIT). The following is an example of a QUITPROG intrinsic call: QUITPROG (NUM); The NUM parameter is transmitted as part of the abort message to the calling process's $STDLIST. You can use this number to assist you in determining the state of the calling process when the abort occurred. In a session, your Root CI remains active even after the entire program is aborted. In a batch job, the job terminates, unless the :CONTINUE command is in effect.


MPE/iX 5.0 Documentation