Lines Matching refs:pdes
81 pdes_get(int *pdes, const char **type)
93 if (socketpair(AF_LOCAL, stype, 0, pdes) < 0)
96 fcntl(pdes[0], F_SETFD, FD_CLOEXEC);
97 fcntl(pdes[1], F_SETFD, FD_CLOEXEC);
102 if (pipe2(pdes, flags) == -1)
105 if (pipe(pdes) == -1)
107 fcntl(pdes[0], F_SETFL, fcntl(pdes[0], F_GETFL) | flags);
108 fcntl(pdes[1], F_SETFL, fcntl(pdes[1], F_GETFL) | flags);
115 (void)close(pdes[0]);
116 (void)close(pdes[1]);
122 pdes_child(int *pdes, const char *type)
137 (void)close(pdes[0]);
138 if (pdes[1] != STDOUT_FILENO) {
139 (void)dup2(pdes[1], STDOUT_FILENO);
140 (void)close(pdes[1]);
145 (void)close(pdes[1]);
146 if (pdes[0] != STDIN_FILENO) {
147 (void)dup2(pdes[0], STDIN_FILENO);
148 (void)close(pdes[0]);
154 pdes_parent(int *pdes, struct pid *cur, pid_t pid, const char *type)
160 iop = fdopen(pdes[0], type);
162 cur->fd = pdes[0];
164 (void)close(pdes[1]);
166 iop = fdopen(pdes[1], type);
168 cur->fd = pdes[1];
170 (void)close(pdes[0]);
181 pdes_error(int *pdes, struct pid *cur)
184 (void)close(pdes[0]);
185 (void)close(pdes[1]);
192 int pdes[2], serrno;
195 if ((cur = pdes_get(pdes, &type)) == NULL)
207 pdes_error(pdes, cur);
212 pdes_child(pdes, type);
218 pdes_parent(pdes, cur, pid, type);