DosGetPPID
#define INCL_DOSPROCESS
USHORT rc = DosGetPPID(PID, PPID);
USHORT PID; /* Process whose parent is wanted */
PUSHORT PPID; /* Address to put parent's PID */
USHORT rc; /* return code */
Example
The following example demonstrates how to create a process, obtain process
ID information, and kill a process. Process1 invokes process2 to run
asynchronously. It obtains and prints some PID information, and then
kills process2.
/* ---- process1.c ---- */
#define INCL_DOSPROCESS
#include <os2.h>
#define START_PROGRAM "process2.exe" /* Program pointer */
main()
{
CHAR ObjFail [50]; /* Object name buffer */
RESULTCODES ReturnCodes; /*
PIDINFO PidInfo;
PID ParentID; /*
USHORT rc;
printf("Process1 now running. \n");
/** Start a child process. **/
if(!(DosExecPgm(ObjFail, /* Object name buffer */
sizeof(ObjFail), /* Length of obj. name buffer */
EXEC_ASYNC, /* Execution flag - asynchronous */
NULL, /* No args. to pass to process2*/
NULL, /* Process2 inherits process1's
environment */
&ReturnCodes, /* Ptr. to resultcodes struct. */
START_PROGRAM))) /* Name of program file */
printf("Process2 started. \n");
/** Obtain Process ID information and print it **/
if(!(rc=DosGetPID(&PidInfo))) /* Process ID's (returned) */
printf("DosGetPID: current process ID is %d; thread ID is %d; parent process ID is %d.\n",
PidInfo.pid, PidInfo.tid, PidInfo.pidParent);
if(!(rc=DosGetPPID(
ReturnCodes.codeTerminate, /* Process whose parent is wanted */
&ParentID))) /* Address to put parent's PID */
printf("Child process ID is %d; Parent process ID is %d.\n",
ReturnCodes.codeTerminate, ParentID);
/** Terminate process2 **/
if(!(rc=DosKillProcess(DKP_PROCESSTREE, /* Action code - kill process
and descendants */
ReturnCodes.codeTerminate))) /* PID of root of process tree */
printf("Process2 terminated by process1.\n");
}
/* ---- process2.c ---- */
#define INCL_DOSPROCESS
#include <os2.h>
#define SLEEPTIME 500L
#define RETURN_CODE 0
main()
{
printf("Process2 now running.\n");
/* Sleep to allow process1 to kill it */
DosSleep(SLEEPTIME); /* Sleep interval */
DosExit(EXIT_PROCESS, /* Action Code */
RETURN_CODE); /* Result Code */
}
Created using Inf-PHP v.2 (c) 2003 Yuri Prokushev
Created using Inf-HTML v.0.9b (c) 1995 Peter Childs