文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Linux进程信息

Linux进程信息

时间:2010-12-05  来源:longmenyu

预备知识: 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



相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载