如何以编程方式获取进程的根目录?

问题描述 投票:1回答:2

在Linux上,每个进程都有自己的根目录。对于大多数流程,这是/。但是,chroot可以改变这种状况。此信息通过/proc公开。但是,如何以编程方式查找进程的根目录?是否有系统调用或libc函数?

linux process system-calls
2个回答
1
投票

我不知道是否有其他方法,但许多程序依赖于/proc中的机器可读文件来获取有关进程的其他信息,并且没有任何内在错误。

以下是通过/proc以编程方式查找自己的根目录的过程示例:

#include <stdio.h>
#include <limits.h>
#include <unistd.h>

int main() {
  char foo[PATH_MAX+1];
  int count = readlink("/proc/self/root", foo, PATH_MAX);
  if(count < 0) {
    perror("Can't find root dir (is /proc mounted here?)");
  } else {
    foo[count]=0;
    printf("My root dir is %s\n", foo);
  }
}

0
投票

好吧没有。有一个命令,这是pwdx,这是它的代码https://elixir.bootlin.com/busybox/latest/source/procps/pwdx.c。它还从/ proc读取根目录。您可以使用getpid函数获取进程的pid。

© www.soinside.com 2019 - 2024. All rights reserved.