1:进程号(PID) 2:父进程号(PPID) 1:进程真实用户号(RUID) 在不同用户(root 和普通用户)下执行UID是不一样的。 3:进程用户组号(GID)
进程号是系统维护的唯一一个标识一个进程的正整数,用户层无法对其进行修改。
Linux下操作系统的第一个进程为init进程,其他进程在此基础上增长,
可以使用ps aux
查看当前系统的所有进程的基本属性。
例:
我们通过getpid()函数可以获得当前进程的pid
该函数包含在#include<unistd.h>函数中
pid_t实际上就是int,用来记录进程号的。只不过在这里为了增加程序可读性进程了自定义
我们模拟实现获取pid可以自己写个程序
源码:#include<stdio.h> #include<unistd.h> int main(int argc,char *argv[]) { printf("the current program's pid is%d",getpid()); return 0; }
任何进程(除了init进程)都是由另一个进程创建的,改进程被称为进程的子进程,父进程无法在用户层面进行修改。父进程的pid号就是子进程的ppid号。用户可以通过getppid()函数来获取当前进程的父进程号。#include<stdio.h> #include<unistd.h> int main(int argc,char *argv[]) { printf("the current program's ppid is%d",getppid()); return 0; }
3:进程组号(PGID)
每个用户都有自己的用户号(UID)和用户组号(GUID)。,进程拥有自己进程号(PID)和进程组号(PGID)。
**getpgid()函数用来获取指定进程的进程组号,**函数有个参数
_pid_t getpgid(_pid_t _pid),
getpgrp()也可以用来获取当前进程的进程组号。但组长进程可以先退出,只要在某个进程组中有一个进程存在,这个进程就存在,其组长进程是否终止无关。
将某个进程加到某个进程组:函数 setpgid()
int setpgid(pid_t pid,pid_t pgid);
第一个参数为想要修改的PGID进程的PID,第二个参数为新的进程的PID号。
一个进程只能为自己或者子进程设置进程组号PGID。
4:会话(SID)
会话是一个或者多个进程组的集合。系统调用函数getsid()来获取某个进程的会话号SID。
以上就是进程的基本属性,接下来我们来看进程的用户属性。
创建该进程的用户的UID(执行次此程序的用户)为此进程的真实用户号。可用个getuid()函数获取当前进程的真实用户号。
2:进程有效用户号(EUID)。
主要用于权限检查,多数情况下EUID和UID相同。如果可执行文件的setuid位有效,该文件拥有者之外的用户运行此程序的时候,EUID和UID不相同。当某可执行文件设置了setgid位后,任何用户运行此程序时,有效用户组EUID为改文件拥有者。
我们来看一段代码#include<stdio.h> #include<stdlib.h> #include<unistd.h> int main(int argc,char* argv[]) { int uid,euid,suid; getresuid(&uid,&euid,&suid); printf("uid = %d,euid = %d,suid = %dn",uid,euid,suid); return 0; }
可以通过getgid()来获取当前进程的用户组号。
4:有效进程组号(EGID)
一般情况下,EGID和GID相同,但是当某个可执行文件设置了setgid()位,任何用户在运行此程序时,有效用户组号EGID为该文件的拥有者所在的组。可用getgid()函数来获取当前进程的有效用户组号。
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算