linux c 获取用户信息以及主机信息

原创 2015年07月10日 22:42:58
/*
gino
2015/7/10 21:52:38
*/

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <pwd.h>
#include <sys/utsname.h>
int main(){
    /*
    getlogin函数返回与当前用户关联的登录名。
    getuid函数返回程序关联的UID,它通常是启动程序的用户的UID。
    */
    printf("Login user is %s\n",getlogin());
    printf("uid=%d, gid=%d\n",getuid(),getgid());

    /*
    系统文件/etc/passwd包含一个用户帐号数据库。它由行组成,每行对应一个用户,包括:
    用户名、加密口令、用户标识符(UID)、组标识符(GID)、全名、主目录和默认shell。
    编程接口的数据结构:
    strcut passwd {
        char *pw_name;
        char *pw_passwd;
        uid_t pw_uid;
        gid_t pw_gid;
        char *pw_gecos;
        char *pw_dir;
        char *pw_shell;
    }


    */
    struct passwd *pw;
    /*获取当前用户信息,返回一个指向passwd结构的指针。出错返回NULL,并设置errno*/
    pw = getpwuid(getuid());
    printf("name=%s, pass=%s, uid=%d, gid=%d, gecos=%s, dir=%s, shell=%s\n",\
                    pw->pw_name, pw->pw_passwd, pw->pw_uid, pw->pw_gid, pw->pw_gecos, pw->pw_dir, pw->pw_shell);

    /*获取指定用户信息,返回一个指向passwd结构的指针。出错返回NULL,并设置errno*/
    pw = getpwnam("gino");
    printf("name=%s, pass=%s, uid=%d, gid=%d, gecos=%s, dir=%s, shell=%s\n",\
                    pw->pw_name, pw->pw_passwd, pw->pw_uid, pw->pw_gid, pw->pw_gecos, pw->pw_dir, pw->pw_shell);


    char computer[256];
    /*
    获取本地主机的标准主机名
    int gethostname(char *name, size_t len);
    name : 一个指向存放主机名的缓冲区指针
    len : 缓冲区的长度
    成功返回0,失败返回-1.
    */
    gethostname(computer,256);
    printf("hostname=%s\n",computer);

    /*
    struct utsname {
    char sysname[];    //当前操作系统名 
    char nodename[];   //网络上的名称
    char release[];    //当前发布级别 
    char version[];    //当前发布版本 
    char machine[];    //当前硬件体系类型
    #ifdef _GNU_SOURCE
    char domainname[];  //当前域名 
    #endif
    };
    */
    struct utsname uts;

    /*
    获取当前内核名称和其他信息
    int uname(struct utsname *buf);
    成功返回0,失败返回-1.
    */
    uname(&uts);
    printf("sysname=%s\n",uts.sysname);
    printf("nodename=%s\n",uts.nodename);
    printf("release=%s\n",uts.release);
    printf("version=%s\n",uts.version);
    printf("machine=%s\n",uts.machine);


    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

Linux获取当前用户信息函数

http://www.cnblogs.com/dirt2/p/5999842.html 转自:http://net.pku.edu.cn/~yhf/linux_c/function/07.h...
  • chenyijun
  • chenyijun
  • 2017年06月01日 15:26
  • 573

LINUX下查看主机信息

1、查看内核 [root@localhost ~]# uname -a Linux localhost.localdomain 2.6.18-164.el5xen #1 SMP Tue Aug...
  • sunlimiao
  • sunlimiao
  • 2011年12月02日 03:13
  • 1422

Linux系统查看当前主机CPU、内存、机器型号及主板信息

Linux系统查看当前主机CPU、内存、机器型号及主板信息: 查看CPU信息(型号) # cat /proc/cpuinfo | grep name | cut -f2 -d: | uni...
  • wukong_666
  • wukong_666
  • 2016年07月26日 20:18
  • 3237

获取linux系统的用户名

1. 获取用户信息         1.1 获取用户名和uid         1.2 getuid与getlogin实例         1.3 获取详细的用户信息         1.4 ...
  • wenyue043
  • wenyue043
  • 2013年05月16日 17:11
  • 335

系统登录函数login.c

int main(int argc, char **argv) {     extern int optind;     extern char *optarg, **environ...
  • hanghang121
  • hanghang121
  • 2016年04月18日 11:49
  • 1013

shell获取当前用户名或者ID

[user@localhost fix_bug_srpm]$ echo "$USER"user[user@localhost fix_bug_srpm]$ echo `id -u`503[user@l...
  • socol
  • socol
  • 2009年10月26日 10:57
  • 10210

Linux下用于查看系统当前登录用户信息的4种方法

作为系统管理员,你可能经常会(在某个时候)需要查看系统中有哪些用户正在活动。有些时候,你甚至需要知道他(她)们正在做什么。本文为我们总结了4种查看系统用户信息(通过编号(ID))的方法。 1. 使用...
  • wudiyi815
  • wudiyi815
  • 2012年10月11日 16:56
  • 112205

用C语言如何获取当前Linux系统的用户名

https://zhidao.baidu.com/question/9421736.html 可以使用getuid()获取用户的ID号,然后通过getpwuid函数通过用户的uid查找用...
  • chenyijun
  • chenyijun
  • 2017年06月05日 17:46
  • 1055

Linux C, 取得进程信息和用户信息

1. 基本知识 在Linux 是一个多用户多任务的操作系统。同时会有不同的用户,向操作系统发出各种命令。 命令通过程序执行。在执行的过程中,就会产生进程。这里我们讲程序和进程之间的关系,我们可以这...
  • u013589130
  • u013589130
  • 2015年05月02日 21:26
  • 2162

Linux获取当前用户信息函数

http://www.cnblogs.com/dirt2/p/5999842.html 转自:http://net.pku.edu.cn/~yhf/linux_c/function/07.h...
  • chenyijun
  • chenyijun
  • 2017年06月01日 15:26
  • 573
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux c 获取用户信息以及主机信息
举报原因:
原因补充:

(最多只允许输入30个字)