#include int main(void) { int fd[2]; int pid; FILE *fp; if (pipe(fd) < 0) { puts("failed pipe()"); exit(1); } pid = fork(); switch (pid) { case -1: exit(1); case 0: sleep(0x7fff); exit(0); } close(fd[1]); if ((fp = fdopen(fd[0], "r")) == NULL) { puts("failed fdopen()"); exit(1); } #if 1 if (pclose(fp) < 0) { puts("failed pclose()"); exit(1); } #elif 1 if (close(fd[0]) < 0) { puts("failed close()"); exit(1); } #else if (fclose(fp) < 0) { puts("failed fclose()"); exit(1); } #endif sleep(0x7fff); return 0; }