home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d1xx / d145 / dnet.lha / Dnet / unix / test / test.c < prev   
C/C++ Source or Header  |  1988-05-26  |  1KB  |  82 lines

  1.  
  2. /*
  3.  *  TEST.C
  4.  *
  5.  *  create a socketpair()
  6.  *  chdir into NET1
  7.  *  filedes #2 = LOG
  8.  *  filedes #0 = first pair
  9.  *  fork/exec
  10.  *
  11.  *  chdir into NET2
  12.  *   filedes #2 = LOG
  13.  *  etc..
  14.  *
  15.  */
  16.  
  17. #include <sys/types.h>
  18. #include <sys/socket.h>
  19. #include <stdio.h>
  20. #include <sys/file.h>
  21.  
  22. char *arg;
  23.  
  24. main(ac,av)
  25. char *av[];
  26. {
  27.     int des[2];
  28.     int fd;
  29.     int error;
  30.  
  31.     arg = av[1];    /* NULL ok */
  32.     error = socketpair(AF_UNIX, SOCK_STREAM, 0, des);
  33.     negerr(error, "socketpair");
  34.     if (chdir("NET1") < 0) {
  35.     puts("Unable to CD NET1");
  36.     exit(1);
  37.     }
  38.     fd = open("LOG", O_WRONLY|O_CREAT|O_TRUNC, 0666);
  39.     dnet(des[0], fd);
  40.     if (chdir("../NET2") < 0) {
  41.     puts("Unable to CD NET2");
  42.     exit(1);
  43.     }
  44.     fd = open("LOG", O_WRONLY|O_CREAT|O_TRUNC, 0666);
  45.     dnet(des[1], fd);
  46. }
  47.  
  48. dnet(comfd, logfd)
  49. {
  50.     int o0 = dup(0);
  51.     int o1 = dup(1);
  52.     int o2 = dup(2);
  53.     dup2(comfd, 0);
  54.     dup2(logfd, 1);
  55.     dup2(logfd, 2);
  56.     if (fork() == NULL) {
  57.        fcntl(0, F_SETOWN, getpid());
  58.        execlp("dnet", "dnet", arg, NULL);
  59.        puts("unable to find DNET");
  60.        exit(1);
  61.     }
  62.     dup2(o0, 0);
  63.     dup2(o1, 1);
  64.     dup2(o2, 2);
  65.     close(o0);
  66.     close(o1);
  67.     close(o2);
  68. }
  69.  
  70. negerr(error, str)
  71. char *str;
  72. {
  73.     if (error < 0) {
  74.     perror(str);
  75.     exit(1);
  76.     }
  77. }
  78.  
  79.  
  80.  
  81.  
  82.