📄 readme.inodedb
字号:
Not all UNIXes provide an easy way to get the filename if you havethe device it is mounted on and its inode.Well, under Linux we can simply read /proc/<pid>/maps to get the filenamesbut I don't see any way to get this under FreeBSD.In this case you can give configure the optional `--with-libgtop-inodedb'parameter to build this stuff here.It uses the GNU database library `gdbm' to find the inode in a databasewhich is created when libgtop is installed. This should be reasonablefast since the entire filesystem only needs to be traversed once whenlibgtop is installed (and each time you install new software, of cause).We have two databases:* First the system administrator may place a system-wide database in `$(prefix)/var/libgtop/inodedb.db' when installing libgtop.* Every user can have his/her own one in `~/var/libgtop/inodedb.db'. This one has precedence over the system wide one.The `mkinodedb' program which is build in this directory takes twocommand line arguments: the full pathname of the database to be createdand the name of a configuration file consisting of directory and file nameseach on a line by itself - see `/etc/ld.so.conf' for an example.Putting a directory name in this file means all regular files found in thisdirectory are included in the database, but it will not recursively descendinto subdirectories (for instance, we want everythink in `/usr/lib' but notevery single file in `/usr/lib/sgml'). You can also use filenames to includea single file.To use this interface in your program, you first have to call`glibtop_inodedb_open ()':glibtop_inodedb *glibtop_inodedb_open (unsigned databases, unsigned long cachesize)glibtop_inodedb *glibtop_inodedb_open_s (glibtop *server, unsigned databases, unsigned long cachesize)There are some constants defined in <glibtop/inodedb.h> for the `databases'parameter - you can use zero as default:#define GLIBTOP_INODEDB_SYSTEM 1#define GLIBTOP_INODEDB_USER 2#define GLIBTOP_INODEDB_CACHE 4The `cachesize' gives the size of a not yet implemented in-memory cache forlooked up entries.This function will return a pointer of type `glibtop_inodedb *' which you needto lookup an entry in the database.To look up an entry, use the `glibtop_inodedb_lookup ()' function:const char *glibtop_inodedb_lookup (glibtop_inodedb *inodedb, guint64 device, guint64 inode)const char *glibtop_inodedb_lookup_s (glibtop *server, glibtop_inodedb *inodedb, guint64 device, guint64 inode)It will either return a pointer to the filename - which you have to`g_free ()' once done with it - or NULL on error.You can use the `file_by_inode' program in this directory to test theinterface - just call it with two command line arguments: the device numberand the inode number.Martin <martin@home-of-linux.org>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -