version 1.45, 2017/08/10 14:26:31 |
version 1.46, 2017/08/21 21:41:13 |
|
|
struct stat sbuf; |
struct stat sbuf; |
int nread, pdes[2], status; |
int nread, pdes[2], status; |
char buf[1024]; |
char buf[1024]; |
|
pid_t pid; |
|
|
if (!doall) |
if (!doall) |
return; |
return; |
|
|
goto done; |
goto done; |
if (pipe(pdes) < 0) |
if (pipe(pdes) < 0) |
goto done; |
goto done; |
switch (vfork()) { |
switch ((pid = vfork())) { |
case -1: /* error */ |
case -1: /* error */ |
(void)close(pdes[0]); |
(void)close(pdes[0]); |
(void)close(pdes[1]); |
(void)close(pdes[1]); |
|
|
(void)write(pdes[1], buf, nread); |
(void)write(pdes[1], buf, nread); |
(void)close(pdes[1]); |
(void)close(pdes[1]); |
done: (void)fclose(fp); |
done: (void)fclose(fp); |
while (wait(&status) >= 0) |
while (waitpid(pid, &status, 0) == -1) { |
; |
if (errno != EINTR) |
|
break; |
|
} |
} |
} |
|
|
|
|