#include #include #include char *fin = "/tmp/hoge"; int main(void) { struct stat stb; fd_set f; unlink(fin); (void)alarm(5); if (mknod(fin, S_IFIFO|0777, 0)) exit(1); if (stat(fin, &stb) || (stb.st_mode & S_IFIFO) != S_IFIFO) exit(1); close(0); if (open(fin, O_RDONLY | O_NONBLOCK)) exit(1); if (fork() == 0) { #ifndef CHECK close(0); if (open(fin, O_WRONLY | O_NONBLOCK)) exit(1); #endif close(0); if (open(fin, O_WRONLY | O_NONBLOCK)) exit(1); if (write(0, "TEST", 4) == -1) exit(1); exit(0); } FD_SET(0, &f); if (select(1, &f, 0, 0, 0) == -1) exit(1); exit(0); }