c++ /boost:检查进程权限
C++/boost: checking process permission
我正在写一个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)好吧,你没有这样的权限。
相关文章:
- boost::进程间消息队列引发错误
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 是否可以通过C++扩展强制多个python进程共享同一内存
- IPC使用多个管道和分支进程来运行Python程序
- 异常属于C++中的线程还是进程
- 从根权限进程创建可访问的文件
- 提升进程间共享内存删除、权限和输出文件
- 窗口 :创建仅具有对我的进程的权限的目录 (C++)
- 从由 CreateProcessWithLogonW 创建的进程中删除PROCESS_TERMINATE访问权限
- 如何使用特定的访问权限启动子进程
- 如何使用管理权限调用终止进程
- 为什么 setsockopt( TCP_REPAIR ) 会在进程具有根权限时返回 EPERM
- 为什么没有向另一个进程提供对内存位置的访问权限
- 使用调试权限和读/写内存打开进程
- 如何为所有进程提供同步访问权限
- 如何检查进程是否具有管理权限
- 如何提升子进程的权限
- 使用CreateToolhelp32Snapshot()对正在运行的进程进行快照时,权限被拒绝
- c++ /boost:检查进程权限
- 提示重新启动进程以获得管理权限