| /* |
| * hold_inode.c --- test program which holds an inode or directory |
| * open. |
| * |
| * Copyright (C) 2000 Theodore Ts'o. |
| * |
| * %Begin-Header% |
| * This file may be redistributed under the terms of the GNU Public |
| * License. |
| * %End-Header% |
| */ |
| |
| #include <unistd.h> |
| #include <stdio.h> |
| #include <dirent.h> |
| #include <sys/types.h> |
| #include <sys/stat.h> |
| #include <fcntl.h> |
| |
| |
| main(int argc, char **argv) |
| { |
| struct stat statbuf; |
| char *filename; |
| |
| if (argc != 2) { |
| fprintf(stderr, "Usage: %s dir\n", argv[0]); |
| exit(1); |
| } |
| filename = argv[1]; |
| if (stat(filename, &statbuf) < 0) { |
| perror(filename); |
| exit(1); |
| } |
| if (S_ISDIR(statbuf.st_mode)) { |
| if (!opendir(filename)) { |
| perror(filename); |
| exit(1); |
| } |
| } else { |
| if (open(filename, O_RDONLY) < 0) { |
| perror(filename); |
| exit(1); |
| } |
| } |
| sleep(30); |
| } |