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

标签 linux process system-calls

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

最佳答案

我不知道是否有其他方法,但很多程序依赖于 /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);
  }
}

关于linux - 如何以编程方式获取进程的根目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54892600/

相关文章:

python - Raspberry Pi NoIR 相机挂起

regex - 如何使用 sed 打印匹配模式

c# - 单击按钮时如何检查已经打开的窗口?

android - 如何在 Android 中终止未运行的进程

linux - perf 工具能否提供在 VM 中调用的系统调用列表?

Linux:将 sleep() 与信号结合起来

c - Unix网络编程,协议(protocol)不支持的地址族

android - 在android应用程序中使用多个进程的优缺点是什么

c++ - 使用 pipe() 和 fork() 读取文件并输出到控制台/新文件

c - 用于提示和获取用户输入的系统调用函数