我想知道是否有可能以编程方式获取在C中的Linux机器上登录的用户数量?我做了一些研究并发现了关于utmp.h但是由于并非所有程序都使用utmp日志记录,我认为它不够准确.提前感谢愿意提供帮助的任何人.

编辑:我为没有更具体的人道歉,但当我说登录用户时,我指的是通过shell登录的任何人.基本上是在没有命令行参数的情况下运行who命令时得到的结果.

解决方法:

你的目标是Linux,你说你想做谁做的事情.如果您的软件不会被分发或获得GPL许可,那么您可以从系统上运行的人员的开源实现中获取信息.


但那些都是相当的限制.那么,如何在不咨询源代码的情况下找到从哪里开始?通过使用nmhis who在二进制文件上运行nm,你可以很好地了解在哪里看.谁只调用很少的外部功能(Mac OS X 10.6.4下为34).您正在寻找的功能必须是其中之一.可能的候选人是getutxent,utmpxname和getpwuid.您可以查看手册页以验证此猜测.

但首先,为什么不尝试apropos / man -k?快速搜索“用户”会显示用户实用程序,该实用程序仅列出已登录的用户. (注意:这似乎是一个BSDism,所以你可能不会在Linux下使用它.使用apropos快速搜索相关的工具和函数仍然是一个好主意.)用户调用更少的外部函数(只有15个),其中,唯一有趣的一个与有趣的函数重叠的是谁是getutxent.

那么,尝试getutxent怎么样?

标签: bash, linux

相关文章推荐

添加新评论,含*的栏目为必填