曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 4413|回复: 0
打印 上一主题 下一主题

[用户与组] cuserid() -- 获取当前有效用户名

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2011-12-24 18:06:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
cuserid() 原型如下:
[Plain Text] 纯文本查看 复制代码
#include <stdio.h>
char *cuserid(char *string);

cuserid() 函数返回一个包含了运行该函数进程的有效用户ID所对应用户名的指针。如果参数 string 是个非空指针,那么它应该是一个至少是个 L_cuserid 大小的字符数组,则用户名就返回并存放在该数组之中。

如果 string 为 NULL,那么返回的字符串则存放在一个自动分配的静态缓冲区中,若在调用 cuserid() 后再调用该函数或者调用 getlogin() 函数,那么这个静态缓冲区就会被覆盖。

宏  L_cuserid 定义在 stdio.h 头文件中,实际上可以在vi /usr/include/bits/stdio_lim.h 中找到该值的具体定义,POSIX 中定义该值为 9 。

尽量使用 getpwuid(geteuid()); 函数来取代该函数。

测试代码
[C++] 纯文本查看 复制代码
#include <stdio.h>

int main()
{
        printf ("I am %s.\n", cuserid(NULL));

        return 0;
}

使用用户名为 beyes 的用户运行该程序:
./cuserid
I am beyes.
使用 root 来运行该程序:
# ./cuserid
I am root.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-18 02:53 , Processed in 0.061161 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表