我有一个C ++程序。它在USB驱动器上。我怎样才能找出这个USB驱动器的/ dev路径? (来自当前正在运行的程序)
答案 0 :(得分:0)
假设您使用的是Linux(您没有指定哪个操作系统) - 您可以通过查看/ proc / self / exe获取完整的可执行文件路径 - 请注意,检查argv [0]在此处不起作用(原因)如上所述)。
/ proc / self / exe是完整的exectuable路径的符号链接。 “自我”是你自己的pid的象征性链接,所以你不必担心它。例如:
[root@localhost frameworks]# ls -l /proc/self/exe
lrwxrwxrwx. 1 root root 0 Feb 14 18:00 /proc/self/exe -> /usr/bin/ls
注意'ls'在这里看到自己。不同的过程同样会看到它们的完整路径。
然后,您需要做的是获取已安装文件系统的列表(与mount(1)相同,使用getmntent(3)),并找到最长的挂载点路径(mnt_dir字段为入口结构)这是你的exe名称的前缀。这是来自mntent.h:
struct mntent {
char *mnt_fsname; /* name of mounted file system */
char *mnt_dir; /* file system path prefix */
char *mnt_type; /* mount type (see mntent.h) */
char *mnt_opts; /* mount options (see mntent.h) */
int mnt_freq; /* dump frequency in days */
int mnt_passno; /* pass number on parallel fsck */
};