objective-c – 目标C和OS用户类型

objective-c – 目标C和OS用户类型,第1张

概述有没有办法通过目标C获取当前登录的用户类型(root,admin或normal)? 我知道NSFullUserName()给出了用户名,但是如何检索用户类型? 谢谢. 您可以使用getpwnam或getpwuid检索用户组,然后使用getgrgid从gid获取组名. 这些是标准库中的C函数. – 编辑:这是一个简短的,编码不好的C例子— 这是一个小例子,在终端的mac os上它应该使用make构建 有没有办法通过目标C获取当前登录的用户类型(root,admin或normal)?

我知道NSFullUsername()给出了用户名,但是如何检索用户类型?

谢谢.

解决方法 您可以使用getpwnam或getpwuID检索用户组,然后使用getgrgID从gID获取组名.

这些是标准库中的C函数.

– 编辑:这是一个简短的,编码不好的C例子—

这是一个小例子,在终端的mac os上它应该使用make构建(如果你命名文件getpwnam_example.c你可以在与c文件相同的目录中执行$make getpwnam_example).

#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <strings.h>#include <pwd.h>#include <grp.h>int main(int argc,char **argv) {    uID_t current_user_ID = getuID();    printf("My Current UID is %d\n",current_user_ID);    struct passwd *pwentry = getpwuID(current_user_ID);    printf("My Current name is %s\n",pwentry->pw_gecos);    printf("My Current Group ID is %d\n",pwentry->pw_gID);    struct group *grentry = getgrgID(getgID());    printf("My Current Group name is %s\n",grentry->gr_name);    printf("Am I an admin? ");    struct group *admin_group = getgrnam("admin");    while(*admin_group->gr_mem != NulL) {        if (strcmp(pwentry->pw_name,*admin_group->gr_mem) == 0) {            printf("yes!\n");        }        admin_group->gr_mem++;    }    return 0;}
总结

以上是内存溢出为你收集整理的objective-c – 目标C和OS用户类型全部内容,希望文章能够帮你解决objective-c – 目标C和OS用户类型所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1031738.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存