home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d2xx
/
d282
/
rcs.lha
/
RCS
/
rcs.zoo
/
rcs
/
rsbx.lib
/
childstatus.c
next >
Wrap
C/C++ Source or Header
|
1989-11-04
|
2KB
|
71 lines
/****** rsbx.lib/ChildStatus() ***********************************************
*
* NAME
* ChildStatus -- Check completion status of child process.
*
* SYNOPSIS
* completion = ChildStatus(child, status)
*
* struct ChildNode *ChildStatus(struct ChildNode *, long *);
*
* FUNCTION
* Checks if a child process has completed and sets status to the return
* code from the child process if it has.
*
* INPUTS
* child - Child process identifier returned from LaunchChildX();
* status - Pointer to a long to place the return code from the
* child process in.
*
* RESULT
* completion - Child process identifier if child is a child process
* of this process and has completed. If child is a child
* process of this process and has not completed, then
* completion is 0 and status is set to 0. If child is
* not a child procewss of this process, then completion
* is 0 and status will be non-zero.
*
* NOTES
*
* SEE ALSO
* CreateFamily(), EmptyMorgue(), LaunchChildl(), LaunchChildv(),
* OrphanChild(), OrphanChildren(), WaitChild().
*
* BUGS
* None known.
*
******************************************************************************
*
*/
#include <rsbx/childtasking.h>
struct ChildNode *ChildStatus(struct ChildNode *child, long *status)
{
struct ChildNode *node;
EmptyMorgue();
for (node = (struct ChildNode *)_Children->ChildList.mlh_Head;
node->node.mln_Succ;
node = (struct ChildNode *)node->node.mln_Succ)
{
if (node == child)
{
if (!child->notice.noticeptr)
{
*status = child->notice.ret;
return child;
}
else
{
*status = 0;
return 0;
}
}
}
*status = -1;
return 0;
}