1 #include <errno.h> 2 #include "lib.h" 3 #include "sys9.h" 4 5 int pipe(int fildes[2])6pipe(int fildes[2]) 7 { 8 Fdinfo *fi; 9 int i; 10 11 if(!fildes){ 12 errno = EFAULT; 13 return -1; 14 } 15 if(_PIPE(fildes) < 0) 16 _syserrno(); 17 else 18 if(fildes[0] < 0 || fildes[0]>=OPEN_MAX || 19 fildes[1] < 0 || fildes[1]>=OPEN_MAX) { 20 errno = EMFILE; 21 return -1; 22 } 23 for(i = 0; i <=1; i++) { 24 fi = &_fdinfo[fildes[i]]; 25 fi->flags = FD_ISOPEN; 26 fi->oflags = O_RDWR; 27 fi->uid = 0; /* none */ 28 fi->gid = 0; 29 } 30 return 0; 31 } 32