预备知识:
1.系统调用getpid可以得到进程的ID,而getppid可以得到父进程(创建调用该函数进程的进程)的ID.
#include <unistd>;
pid_t getpid(void);
pid_t getppid(void);
2.通过系统调用getuid可以得到进程的所有者的ID.由于进程要用到一些资源,而Linux对系统资源是进行保护的,为了获取一定资源进程还有一个有效用户ID.这个ID和系统的资源使用有关,涉及到进程的权限. 通过系统调用geteuid我们可以得到进程的有效用户ID. 和用户ID相对应进程还有一个组ID和有效组ID系统调用getgid和getegid可以分别得到组ID和有效组ID
#include <unistd>;
#include <sys/types.h>;
uid_t getuid(void);
uid_t geteuid(void);
gid_t getgid(void);
git_t getegid(void);
3.有时候我们还会对用户的其他信息感兴趣(登录名等等),这个时候我们可以调用getpwuid来得到.
struct passwd {
char *pw_name; /* 登录名称 */
char *pw_passwd; /* 登录口令 */
uid_t pw_uid; /* 用户ID */
gid_t pw_gid; /* 用户组ID */
char *pw_gecos; /* 用户的真名 */
char *pw_dir; /* 用户的目录 */
char *pw_shell; /* 用户的SHELL */
};
#include <pwd.h>;
#include <sys/types.h>;
struct passwd *getpwuid(uid_t uid);
  
  下面将通过一个程序实例来实践上面所列的函数:
  
  
    
      | 
          #include <stdio.h>#include <pwd.h>
 #include <sys/types.h>
 #include <unistd.h>
 
 int main(int argc,char **argv)
 {
 pid_t my_pid,myparent_pid;
 uid_t my_uid,my_euid;
 gid_t my_gid,my_egid;
 struct passwd *my_info;
 
 my_pid = getpid();
 myparent_pid = getppid();
 my_uid = getuid();
 my_euid = geteuid();
 my_gid = getgid();
 my_egid = getegid();
 my_info = getpwuid(my_uid);
 
 printf("Process ID:%ld\n",my_pid);
 printf("Parent ID:%ld\n",myparent_pid);
 printf("User ID:%ld\n",my_uid);
 printf("Effective User ID:%ld\n",my_euid);
 printf("Group ID:%ld\n",my_gid);
 printf("Effective Group ID:%ld\n",my_egid);
 
 if(my_info)
 {
 printf("My Login Name:%s\n",my_info->pw_name);
 printf("My Login Password:%s\n",my_info->pw_passwd);
 printf("My User ID:%ld\n",my_info->pw_uid);
 printf("My Group ID:%ld\n",my_gid);
 printf("My Real Name:%s\n",my_info->pw_gecos);
 printf("My Home Directory:%s\n",my_info->pw_dir);
 printf("My Work Shell:%s\n",my_info->pw_shell);
 }
 }
 | 
  
下面是程序运行的结果:
  
    Process ID:3574
  
  
    Parent ID:2721
  
  
    User ID:1000
  
  
    Effective User ID:1000
  
  
    Group ID:1000
  
  
    Effective Group ID:1000
  
  
    My Login Name:longmenyu
  
  
    My Login Password:x
  
  
    My User ID:1000
  
  
    My Group ID:1000
  
  
    My Real Name:longmenyu,,,
  
  
    My Home Directory:/home/longmenyu
  
  
    My Work Shell:/bin/bash