在程序中判断一个文件是否可读的方法
2012-11-14 14:00
393 查看
bool canRead(string _path)
{
assert (!_path.empty());
struct stat st;
if (stat(_path.c_str(), &st) == 0)
{
if (geteuid() == 0) // 程序的ueid 是 root用户 ;root用户,一定对文件可读可写
return true;
//*****不是root用户时 ,与_path这个文件的 user group other 依次判断
else if (st.st_uid == geteuid()) // owner 属性
return (st.st_mode & S_IRUSR) != 0;
else if (st.st_gid == getegid()) // group 组属性
return (st.st_mode & S_IRGRP) != 0;
else
return (st.st_mode & S_IROTH) != 0; // other 组属性
}
return false;
}
=====================
bool FileImpl::canExecuteImpl() const
{
poco_assert (!_path.empty());
struct stat st;
if (stat(_path.c_str(), &st) == 0)
{
if (st.st_uid == geteuid() || geteuid() == 0) // 注意 root用户可能没有执行权限
return (st.st_mode & S_IXUSR) != 0;
else if (st.st_gid == getegid())
return (st.st_mode & S_IXGRP) != 0;
else
return (st.st_mode & S_IXOTH) != 0;
}
else handleLastErrorImpl(_path);
return false;
}
{
assert (!_path.empty());
struct stat st;
if (stat(_path.c_str(), &st) == 0)
{
if (geteuid() == 0) // 程序的ueid 是 root用户 ;root用户,一定对文件可读可写
return true;
//*****不是root用户时 ,与_path这个文件的 user group other 依次判断
else if (st.st_uid == geteuid()) // owner 属性
return (st.st_mode & S_IRUSR) != 0;
else if (st.st_gid == getegid()) // group 组属性
return (st.st_mode & S_IRGRP) != 0;
else
return (st.st_mode & S_IROTH) != 0; // other 组属性
}
return false;
}
=====================
bool FileImpl::canExecuteImpl() const
{
poco_assert (!_path.empty());
struct stat st;
if (stat(_path.c_str(), &st) == 0)
{
if (st.st_uid == geteuid() || geteuid() == 0) // 注意 root用户可能没有执行权限
return (st.st_mode & S_IXUSR) != 0;
else if (st.st_gid == getegid())
return (st.st_mode & S_IXGRP) != 0;
else
return (st.st_mode & S_IXOTH) != 0;
}
else handleLastErrorImpl(_path);
return false;
}
相关文章推荐
- Java 写一个方法判断一个字符串是否对称 "asdfgasdfg"、编写一个程序,将下面的一段文本中的各个单词的字母顺序翻转,
- C# 检查网络是否连通 判断远程文件是否存在 C#获取程序路径的方法中需要注意的地方
- configure文件中判断某函数或库是否存在的一个方法
- 判断ShellExecute函数是否执行完一个程序的方法
- C/C++中判断一个文件是否存在的方法
- java判断一个文件是否为二进制文件的方法
- 在Java中判断一个文件是否是图片和其类型的方法
- Linux 判断是否是一个目录还是一个文件的方法
- Unix学习笔记-------目录遍历实例----Linux下判断是否是一个目录还是一个文件的方法
- C++中判断一个文件是否存在的方法
- 判断ShellExecute函数是否执行完一个程序的方法
- 嵌入式 Linux下判断是否是一个目录还是一个文件的方法
- 判断ShellExecute函数是否执行完一个程序的方法
- 判断ShellExecute函数是否执行完一个程序的方法
- 判断ShellExecute函数是否执行完一个程序的方法
- Linux 判断是否是一个目录还是一个文件的方法
- Lua判断一个目录或文件是否存在的方法
- python 一个简单的依靠文件来判断key是否重复的方法
- 【Qt】正确判断文件、文件夹是否存在的方法
- Python判断一个文件中的字符串是否存在于另外一个文件中