home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / TELECOM / OS9_Unix.lzh / RSHSRC / temp.c < prev    next >
C/C++ Source or Header  |  1992-09-23  |  1KB  |  65 lines

  1. /*---------------------------------------------------------------------*/
  2. /*RSHDC hack down for testing*/
  3.  
  4. #include <signal.h>
  5. #include <errno.h>
  6.  
  7. #define NULL    (void *) 0
  8. #define MAXB    512
  9.  
  10. #define in_skt    0
  11. #define out_skt    1
  12. #define err_skt    2
  13. #define err_pipe    3
  14. #define    out_pipe    4
  15.  
  16. extern int os9forkc();
  17. extern int errno;
  18.  
  19. /*
  20.  *    The main program decides whether we are to fork to create an orphaned
  21.  *    rshdc process, or whether we are the orphan!
  22.  */
  23.  
  24. main(argc,argv,envp)
  25. int argc;
  26. char **argv, **envp;
  27. {
  28.     int pid;
  29.  
  30.     switch (**argv){
  31.         case 0:        /* become the active orphan */
  32.             orphan(argc,argv,envp);
  33.             break;
  34.         default:    /* respawn then orphan */
  35.             **argv=0;
  36.             pid=os9exec(os9forkc,"rshdc",argv,envp,0,0,3);
  37.             if(pid==-1) exit(_errmsg(errno,"Can't orphan"));
  38.             exit(0);
  39.     }
  40. }
  41.  
  42. /*
  43.  *    If this is the orphan go to business ...
  44.  */
  45.  
  46. static int pid4=0;
  47.  
  48. orphan(argc,argv,envp)
  49. int argc;
  50. char **argv;
  51. {
  52.     int cc;
  53.     char buff[MAXB];
  54.     
  55.     write(err_skt,"Message on error path\l",22);
  56.     write(out_skt,"Input message: ",16);
  57.     errno=0;
  58.     cc=read(in_skt,buff,MAXB);
  59.     _errmsg(0,"%d bytes read from in_skt, errno=%d\l",cc,errno);
  60.     write(out_skt,buff,cc);
  61.     cc=read(err_skt,buff,1);
  62.     _errmsg(0,"%d bytes <%c> from err_skt\l",cc,buff[0]);
  63.     exit(0);
  64. }
  65.