[ Home |
Alpha index |
Topic index |
Tutorials |
Download |
Feedback ]
The OS/2 API Project
DosWaitChild
[ Syntax |
Params |
Returns |
Include |
Usage |
Structs |
Gotchas |
Code |
Also ]
Syntax
rc = DosWaitChild( ulAction,
ulWait,
pReturnCodes,
ppidOut,
pidIn );
Parameters
-
ULONG ulAction (input)
-
Specifies which process the current thread is waiting for to end. Values are:
Value Name Description
0 DCWA_PROCESS The process indicated by pidIn
1 DCWA_PROCESSTREE The process indicated by pidIn
and all of its child processes
-
ULONG ulWait (input)
-
Specifies whether to return if no child process ends. Values are:
Value Name Description
0 DCWW_WAIT Wait if no child process ends or until
no child processes are outstanding.
1 DCWW_NOWAIT Do not wait for child processes to end
-
PRESULTDATA pReturnCode (output)
-
Pointer to a RESULTDATA structure holding exit information from the ending
process. If no processes furnish a result code, the system provides the value
-1.
-
ULONG pReturnCode->codeTerminate (output)
-
A code furnished by the system, describing why the child terminated. Values
are:
Value Name Description
0 TC_EXIT Normal exit
1 TC_HARDERROR Hard-error halt
2 TC_TRAP Trap operation for a 16-bit child process
3 TC_KILLPROCESS Unintercepted DosKillProcess
4 TC_EXCEPTION Exception operation for a 32-bit child process
-
ULONG pReturnCode->codeResult (output)
-
The result code specified by the terminating process on its last DosExit call.
-
PPID ppidOut (output)
-
Pointer to the process ID of the ending process.
-
PID pidIn (input)
-
Process ID of the child process (and all its descendants) whose termination is
being waited for. If 0 then any child process that was executed with a return
code, or until there are no more child processes of any type to wait for.
Returns
APIRET rc
0 NO_ERROR
13 ERROR_INVALID_DATA
128 ERROR_WAIT_NO_CHILDREN
129 ERROR_CHILD_NOT_COMPLETE
184 ERROR_NO_CHILD_PROCESS
303 ERROR_INVALID_PROCID
Include Info
#define INCL_DOSPROCESS
#include <os2.h>
Usage Explanation
DosWaitChild waits for an asynchronous child process to end and gets its process
identifier, termination code and result code. It is also possible to check if
the child process has already ended and get information about already ended
child processes.
Relevant Structures
typedef struct _RESULTCODES
{
ULONG codeTerminate;
ULONG codeResult;
} RESULTCODES, *PRESULTCODES;
Gotchas
Sample Code
#define INCL_DOSPROCESS
#include
#include
APIRET rc; /* return code from tha API's */
RESULTCODES rcResult; /* Result code for the child process */
PID pidChild; /* The process ID of the child process */
/* Start a child process with DosExecPgm */
if(rc=DosWaitChild(DCWA_PROCESS, /* Wait for a child process */
DCWW_WAIT, /* Wait for a process to end */
&rcResult, /* Result code */
&pidChild, /* The process ID of the child process */
/* that ended */
0)) /* Wait for any child process to end */
{
/* An error occured */
if(rc == ERROR_NO_CHILD_PROCESS)
{
printf("No child processes left!\n");
}
else
{
/* Any other error */
}
}
else
{
/* Success */
}
See Also
DosExecPgm,
DosKillProcess
Author
Oscar Gustafsson -
oscar@lysator.liu.se
Additions
Last modified September 21/1996
Please send all errors, comments, and suggestions to:
timur@vnet.ibm.com
The OS/2 API Project |
DosWaitChild |