获取包含正在运行的C ++可执行文件的</whatever>的/ dev / <whatever>

时间:2014-02-15 01:55:17

标签: c++

我有一个C ++程序。它在USB驱动器上。我怎样才能找出这个USB驱动器的/ dev路径? (来自当前正在运行的程序)

1 个答案:

答案 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 */
       };