c++ /boost:检查进程权限

C++/boost: checking process permission

本文关键字:进程 权限 检查 boost c++      更新时间:2023-10-16

我正在写一个c++程序,以便对网站进行一些静态分析和修改。我不会更改项目文件,但会在新文件夹中复制、分析和修改这些文件。

是否有一种方法来检查,例如,使用boost::filesystem,如果我(执行它的程序/用户)有足够的权限来读取(文件),执行(用于处理目录层次结构)和写(文件或创建新文件夹)在当前文件夹及其文件(或至少在unix系统下)?

不能用boost程序选项库检查文件权限。可以使用boost filesystem库查询文件权限:

#include <boost/filesystem.hpp> 
#include <stdio.h> 
namespace bfs=boost::filesystem;
int main(int argc,char * argv[])
{
    if (argc < 2) 
        return;
    bfs::path p(argv[1]);
    bfs::file_status s = status(p);
    printf("%Xn",s.permissions());
}

权限标志的值与中的枚举项一样促进/文件系统/v3/operations.hpp

如果你使用的是linux,你可以使用stat函数获取有关文件的信息,包括模式权限,该文件的所有者ID和所有者组ID。

然后您可以使用getuid来比较运行程序的用户的权限与使用stat获得的权限。

这两个链接(实际上是手册页)都有如何使用这些函数的示例。

你也可以尝试对选定的文件做一些操作,比如写,然后正确地处理异常。你不需要访问文件,只是试着打开它写,如果你得到和异常和errno等于EACCESS(permission denied)好吧,你没有这样的权限。