Messages in this thread |  | | Date | Tue, 27 Aug 2002 14:26:38 -0700 | Subject | Re: How can a process easily get a list of all it's open fd? | From | Mike Touloumtzis <> |
| |
On Tue, Aug 27, 2002 at 06:08:42PM +0200, Alex Riesen wrote: > tricky. You can use /proc/<getpid>/fd, and close all > handles listed here, but this has some caveats: > it's _very_ slow if you have many open files. > it's not portable. > it's not safe if you have a thread/signal handler running. > > i never heard of a right way to do this. > > -alex > > int close_all_fd() > { > char fdpath[PATH_MAX]; > DIR * dp; > struct dirent * de; > int fd; > > sprintf(fdpath, "/proc/%d/fd", getpid()); > dp = opendir(fdpath);
This can just be:
dp = opendir("/proc/self/fd/");
then you don't need fdpath.
You can use sigprocmask() if you're worried about signals coming in during this operation.
miket - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |