当前位置: 首页 > 面试题库 >

如何使用C ++在Linux中获取文件的所有者名称?

殷德本
2023-03-14
问题内容

如何使用C ++获取Linux文件系统上文件的所有者名称和组名称?该stat()呼叫仅提供了所有者ID和组ID,但没有提供实际名称。

-rw-r--r--.  1 john devl  3052 Sep  6 18:10 blah.txt

如何以编程方式获取“ john”和“ devl”?


问题答案:

使用getpwuid()getgrgid()

#include <pwd.h>
#include <grp.h>
#include <sys/stat.h>

struct stat info;
stat(filename, &info);  // Error check omitted
struct passwd *pw = getpwuid(info.st_uid);
struct group  *gr = getgrgid(info.st_gid);

// If pw != 0, pw->pw_name contains the user name
// If gr != 0, gr->gr_name contains the group name


 类似资料:
  • 问题内容: 我只需要知道使用Java的Mac上文件的所有者名称,我该如何获取它?谢谢! 问题答案: 这个讨厌。有 没有 用于获取文件的所有者(至少直到并包括Java 6中,这是目前的生产版本的OSX)标准方法。现在,最简单的方法是使用a 来执行以文件名作为参数的对的调用,然后解析将在子进程的标准输出通道上返回的结果。解析结果时必须小心,因为OSX上的用户名可能包含空格。 或者,使用JNI。

  • 问题内容: 如何在程序中不使用环境(getenv,…)的情况下获取实际的“用户名”? 问题答案: 中 定义的函数返回用户名。请参阅以获取更多信息。 它的签名是: 不用说,可以在C或C ++中轻松调用此函数。

  • 问题内容: 如何在Linux下使用Python获取目录的所有者和组ID? 问题答案: 使用获得的UID和GID的文件。然后,使用和分别获取用户名和组名。

  • 问题内容: 我希望读取特定文件夹中的所有文本文件。文件名中没有任何通用模式-否则任务会更容易。 如果我也可以处理子文件夹,那将是很好,但是即使是基本的实现也已足够。 我尝试查看先前询问的相关问题,但是没有一个给出我需要的C和Linux特定答案。 编辑 :所以,这是我根据收到的答案写的- 并收到 错误 -pnp @ pnp-laptop:〜/ snort_rules_folder $ ./a.out

  • 问题内容: 例如,方法调用方法。在方法中,如何获取文件名(我不想传递给方法)… 问题答案: 您可以使用该模块来实现此目的:

  • 问题内容: 出于某种原因,我使用以下代码将文件名始终保持为“ 1”: 当我在$ results_array中回显每个元素时,我得到了一堆‘1’,而不是文件名。如何获得文件名? 问题答案: 不要打扰open / readdir,而使用: