您的位置:首页 > 其它

在程序中判断一个文件是否可读的方法

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: