加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 获取用户名的便携方式

发布时间:2020-12-16 09:47:11 所属栏目:百科 来源:网络整理
导读:对于C/C++,似乎没有可移植的功能来获取 Linux / Posix和Windows中的用户名. 实现这一目标的最简单但最强大的便携式代码是什么? 在Linux中,似乎总是要定义USER环境变量,而Windows似乎定义了USERNAME变量.依赖getenv可以避免包含windows.h并最小化预处理器语
对于C/C++,似乎没有可移植的功能来获取 Linux / Posix和Windows中的用户名.
实现这一目标的最简单但最强大的便携式代码是什么?

在Linux中,似乎总是要定义USER环境变量,而Windows似乎定义了USERNAME变量.依赖getenv可以避免包含windows.h并最小化预处理器语句:

char * user_name = getenv("USER");
if (!user_name) {
     user_name = getenv("USERNAME");
}

但这种方法是否有点稳健?或者我对另一种解决方案一无所知?我对iOS也一无所知……

解决方法

没有便携式解决方案.

在Linix(和一般的Unix)下,“用户”是一个数字,并且可以
有几个不同的名字.然后使用getuid来获取id
getpwuid获取其中一个名字.或者使用getlogin来获取
用户登录时使用的名称(但这仅适用于
过程有一个控制终端).如果你想得到所有
对于用户所知的名称,您必须进行迭代
使用getpwent,检查每个条目的pw_uid字段
回.

不保证使用环境变量.在很多
上下文,环境变量将不会被设置,即使它
是的,它不能保证是正确的.

Windows有一个GetUserName函数;我不太了解然而,关于它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读