我们都知道可以通过/proc/ p i d / 来 获 取 指 定 进 程 的 信 息 , 例 如 内 存 映 射 、 C P U 绑 定 信 息 等 等 。 如 果 某 个 进 程 想 要 获 取 本 进 程 的 系 统 信 息 , 就 可 以 通 过 进 程 的 p i d 来 访 问 / p r o c / pid/来获取指定进程的信息,例如内存映射、CPU绑定信息等等。如果某个进程想要获取本进程的系统信息,就可以通过进程的pid来访问/proc/ pid/来获取指定进程的信息,例如内存映射、CPU绑定信息等等。如果某个进程想要获取本进程的系统信息,就可以通过进程的pid来访问/proc/pid/目录。但是这个方法还需要获取进程pid,在fork、daemon等情况下pid还可能发生变化。为了更方便的获取本进程的信息,linux提供了/proc/self/目录,这个目录比较独特,不同的进程访问该目录时获得的信息是不同的,内容等价于/proc/本进程pid/。进程可以通过访问/proc/self/目录来获取自己的系统信息,而不用每次都获取pid。
那如何获取进程的目录呢?
可以结合readlink命令完成,在程序中写
readlink("/proc/self/exe", path, path_len);
那么执行这个程序的时候,path就是这个程序的路径了。