HPlogo Process Management Programmer's Guide: 900 Series HP 3000 Computer Systems > Chapter 2 Process Management Tasks

Creating a Process (PH Capability Required)

» 

Technical documentation

Complete book in PDF
» Feedback

 » Table of Contents

If your program has PH capability, it can call the CREATEPROCESS intrinsic or the CREATE intrinsic to create a child process. Both intrinsics direct MPE/iX to:

  • Initialize resources

  • Allocate a private data area (including a stack)

  • Load the specified program into virtual memory

  • Assign a Process Identification Number (PIN)

  • Place the newly created child process in a suspended state.

CREATEPROCESS is the recommended intrinsic for process creation because it is designed to be more flexible and extendable than the CREATE intrinsic.

Using CREATEPROCESS

Your program can call the CREATEPROCESS intrinsic to create a child process. Your program can control the creation of the child process with the optional parameters itemnums and items. The information you can pass to MPE/iX through itemnums/items parameter pairs include:

  • The names of the files to be used as $STDIN and $STDLIST for the child process.

  • An option that indicates if the child process is to be activated immediately after it is created, and if the parent process should be suspended automatically when the child process is activated.

  • A list of user-named executable libraries to be searched at load time for required external references.

  • A user-created UNSAT procedure, to which all unsatisfied load-time external references may be directed.

This is an example of a CREATEPROCESS intrinsic call:


        .

        .

        .

   ERRORCODE := 0;

   PIN := 0;

   BNAME := 'MYPROG.PUB.MYACCT';

   ITEMNUMS[1] := 3;

   ITEMNUMS[2] := 0;

   ITEMS[1] := 1;

   CREATEPROCESS (ERRORCODE,PIN,BNAME,ITEMNUMS,ITEMS);

        .

        .

        .

The parameters specified in the example above are described below.

ERRORCODE

Returns a value that indicates the success or failure of the CREATEPROCESS call, and, if unsuccessful, the nature of the error.

PIN

Returns the PIN of the newly created child process.

BNAME

Passes the name of the program file the child process is to execute.

ITEMNUMS

Passes the value 3 in the first element of the array indicating that load option information is passed in the first element of the array ITEMS. The value 0 in the second element indicates the end of the option list.

ITEMS

Passes the value 1 in the first element of the array indicating that the calling process is to be reactivated when the child process is deleted.

Using CREATE

Because the CREATE intrinsic allows your program only limited control over the creation of a child process, it offers a subset of the parameters available with the CREATEPROCESS intrinsic.

This is an example of a CREATE intrinsic call:


        .

        .

        .

   BNAME := 'MYPROG.PUB.MYACCT';

   PIN := 0;

   LOADFLAGS := 1;

   CREATE (BNAME,,PIN,,LOADFLAGS);

        .

        .

        .

The parameters specified in the example above are described below. All other optional parameters are omitted.

BNAME

Passes the name of the program file the child process executes.

PIN

Returns the Process Identification Number (PIN) of the child process.

LOADFLAGS

Passes load option information. The value 1 specifies that the calling process is reactivated when the child process is deleted.

Feedback to webmaster