#include #include #include #include #include #include int main() { int fd; char *envtmp; char path[MAXPATHLEN]; struct stat sb; envtmp = getenv("TMPDIR"); (void)sprintf(path, "%s/bt.XXXXXX", envtmp ? envtmp : "/tmp"); fprintf(stderr, "%s\n", path); if ((fd = mkstemp(path)) != -1) { if (fstat(fd, &sb)) fprintf(stderr, "first fstat error, errno %d\n", errno); else fprintf(stderr, "before unlink: mode 0x%x fmt 0x%x size %ld\n", sb.st_mode, sb.st_mode&_IFMT, (long) sb.st_size); (void)unlink(path); if (fstat(fd, &sb)) fprintf(stderr, "second fstat error, errno %d\n", errno); else fprintf(stderr, "after unlink: mode 0x%x fmt 0x%x size %ld\n", sb.st_mode, sb.st_mode&_IFMT, (long) sb.st_size); } else fprintf(stderr, "mkstemp failed, errno %d\n", errno); (void) close(fd); }