在继续操作之前,我试图确保用户在正确的组中。出于某种原因,它提供了一个奇怪的编译时错误。
#include <sys/types.h>
#include <unistd.h>
#include <pwd.h>
#include <grp.h>
bool getGroup() {
const std::string group = "Controller";
group *grp = getgrnam(group.c_str());
if (grp == NULL) {
ERROR("No group (%s) exists", group.c_str());
return false;
}
passwd *pw = getpwuid(getuid());
std::string uid(pw->pw_name);
for (char **member = grp->gr_mem; *member; member++) {
if (uid.compare(*member) == 0) {
DEBUG("Matched (%s) in group (%s)", uid.c_str(), group.c_str());
return true;
}
}
ERROR("Unable to match user (%s) in group (%s)", uid.c_str(), group.c_str());
return false;
}
编译器抱怨main.cpp
:在函数中
bool getGroup():
main.cpp:72: error: ‘grp’ was not declared in this scope
这个错误对应于这一行:
group *grp = getgrnam(group.c_str());
我一直在页面中阅读有关此的文档man
,并且我相信我做对了。此外,我在我的代码中看不到任何不正确的内容。也许一双新鲜的眼睛会有所帮助。
谢谢!