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系统查看当前主机CPU、内存、机器型号及主板信息

Linux系统查看当前主机CPU、内存、机器型号及主板信息: 查看CPU信息(型号) # cat /proc/cpuinfo | grep name | cut -f2 -d: | uni...

LINUX下查看主机信息

1、查看内核 [root@localhost ~]# uname -a Linux localhost.localdomain 2.6.18-164.el5xen #1 SMP Tue Aug...

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

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

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

https://zhidao.baidu.com/question/9421736.html 可以使用getuid()获取用户的ID号,然后通过getpwuid函数通过用户的uid查找用...

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

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

Linux获取当前用户信息函数

http://www.cnblogs.com/dirt2/p/5999842.html 转自:http://net.pku.edu.cn/~yhf/linux_c/function/07.h...

Linux环境下获取当前主机的IP/MAC等信息(C/C++)

本文介绍在unix环境下获取当前主机IP,MAC地址等网络接口信息。在不确定设备网卡类型的情况下,通过预先定义几种可能的网卡类型,然后依次遍历可能的设备如eth0,eth1,借助ioctl函数获取主机...
  • cjf_wei
  • cjf_wei
  • 2017年04月23日 10:55
  • 1302

C语言调用WindowsAPI函数获取计算机名称

源程序为:#include#includevoid main(){ char a[255];        unsigned long size=255; GetComputerName(a,&siz...

C/C++获取操作系统、CPU、内存信息(windows和linux)

有时候需要在工程里面获取一些系统或者硬件的信息,比如系统版本,cpu,内存,显卡,硬盘等,作为后续软件功能判断的依据,甚至参与性能算法自适应建模 Windows 操作系统和内存信息在windows下通...

C语言获取当前登录用户名

_TCHAR szName[1024] = { 0 }; unsigned long nSize = sizeof(szName); ::GetUserName(szName ,&nSize);
  • ts1011
  • ts1011
  • 2013年05月24日 10:28
  • 1267
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux c 获取用户信息以及主机信息
举报原因:
原因补充:

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