home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 317b.lha / RCS_Sources / rsbx.lib / childtasking.h < prev    next >
C/C++ Source or Header  |  1989-12-05  |  2KB  |  76 lines

  1. /*
  2.  * ChildTasking.h
  3.  */
  4.  
  5. #include <exec/types.h>
  6. #include <exec/lists.h>
  7. #include <exec/ports.h>
  8. #include <libraries/dos.h>
  9.  
  10.  
  11. struct ProcessTreeNode
  12.     {
  13.     void (*Orphan)( void );
  14.     struct MinList ChildList;
  15.     struct MsgPort *Morgue;
  16.     };
  17.  
  18. struct DeathNotice            /* termination message from child */
  19.     {
  20.     struct Message msg;
  21.     struct DeathNotice **noticeptr;    /* process ID of sending task    */
  22.     long ret;            /* return value                  */
  23.     };
  24.  
  25. struct ChildNode
  26.     {
  27.     struct MinNode node;
  28.     struct DeathNotice notice;
  29.     };
  30.  
  31. struct StartMsg                /* startup message sent to child */
  32.     {
  33.     struct Message msg;
  34.     char *command;            /* command line                  */
  35.     ULONG cmdlen;            /* command line length           */
  36.     struct Library *DOSBase;    /* DOS lib pointer               */
  37.     struct MsgPort *morgue;        /* message port for parent       */
  38.     struct DeathNotice *termmsg;    /* child's termination message   */
  39.     BPTR st_fh1;            /* filehandle for child to close */
  40.     BPTR st_fh2;            /* filehandle for child to close */
  41.     };
  42.  
  43. struct LAUNCHENV
  44.     {
  45.     long priority;    /* priority for child process          */
  46.     ULONG stack;    /* stack size for child process.       */
  47.             /*  If zero, stack size of calling     */
  48.             /*  process will be used.              */
  49.     BPTR std_in;    /* AmigaDos filehandle for child's     */
  50.             /*  Input() stream. If zero, Input()   */
  51.             /*  stream of calling process used.    */
  52.     BPTR std_out;    /* AmigaDos filehandle for child's     */
  53.             /*  Output() stream. If zero, Output() */
  54.             /*  stream of calling process used.    */
  55.     BPTR console;    /* console window handler port for     */
  56.             /*  child.                             */
  57.     BPTR le_fh1;    /* AmigaDos filehandle for child to    */
  58.             /*  close at exit.                     */
  59.     BPTR le_fh2;    /* AmigaDos filehandle for child to    */
  60.             /*  close at exit.                     */
  61.     };
  62.  
  63.  
  64. extern struct ProcessTreeNode *_Children;
  65.  
  66. struct ChildNode *LaunchChildl(struct LAUNCHENV *envp, char *name, char *args, 
  67. ..);
  68. struct ChildNode *LaunchChildv(struct LAUNCHENV *envp, char *name, char **argv)
  69.  
  70. void EmptyMorgue( void );
  71. struct ChildNode *WaitChild(struct ChildNode *child, long *status);
  72. struct ChildNode *ChildStatus(struct ChildNode *child, long *status);
  73. int OrphanChild(struct ChildNode *child);
  74. void OrphanChildren( void );
  75. int CreateFamily( void );
  76.