/* $Id: /var/cvsroot/gentoo-src/portage/src/sandbox/problems/Attic/sandbox_dev_fd_foo.c,v 1.2 2003/03/22 14:24:38 carpaski Exp $ */ #include #include #include #include #include void cleanup_1(void) { puts("Unlinking file..."); unlink("/tmp/_sandbox_test.file"); } int main(void) { struct stat s1, s2; FILE *fp1, *fp2; char *file = "/tmp/_sandbox_test.file"; char devfd[32]; printf("Opening file...\n"); if (!(fp1 = fopen(file, "w"))) exit(1); atexit(cleanup_1); printf("fstat'ing file...\n"); if (fstat(fileno(fp1), &s1) < 0) exit(2); sprintf(devfd, "/dev/fd/%d", fileno(fp1)); printf("fopening %s...\n", devfd); if (!(fp2 = fopen(devfd, "w"))) exit(3); printf("fstat'ing %s...\n", devfd); if (fstat(fileno(fp2), &s2) < 0) exit(4); printf("Checking %ld == %ld and %ld == %ld...\n", (long int) s1.st_dev, (long int) s2.st_dev, s1.st_ino, s2.st_ino); if (s1.st_dev != s2.st_dev || s1.st_ino != s2.st_ino) exit(5); printf("Success!\n"); return(0); }