linux进程的基本属性


1. linux环境下,系统运行的第一个进程名字叫 init , pid = 1,由内核产生。其余所有的进程都是通过 fork()函数产生(vfork() 也算吧)。


2. 常用进程的属性有:

pid   ppid   pgid  uid

euid gid egid


3. 进程资源由两部分组成: 内核空间资源,用户空间资源

内核空间资源即PCB相关的信息,用于系统调用,用户不能访问。这些信息包括:进程控制块,打开的文件表项,当前目录,当前终端信息,线程基本信息,可访问的内存地址空间,PID,PPID 等等。

用户空间资源即mm_struc (struct task_struct)t映射的内存空间。其中包括:进程的代码段,数据段,BSS,栈,堆,以及可以访问的共享库的内存空间。这些资源可以直接访问,由程序推出时主动释放。进程运行期间可以通过文件 /proc/{pid}/maps 查看到可以访问的地址空间。


4. 进程的状态:

/usr/include/linux/sched.h 定义如下:

#define TASK_RUNNING                              0

#define TASK_INTERRUPTIBLE                 1

#define TASK_UNINTERRUPTIBLE           2

#define TASK_ZOMBIE                                  4

#define TASK_STOPPED                              8

#define EXIT_ZOMBIE                                   16

#define EXIT_DEAD                                       32

前5个是TASK 的状态,后两个表示进程推出的状态。


5. 获取进程的基本属性:

pid_t  getpid(void);

pid_t getppid(void);

pid_t getpgid(void);

pid_t getpgrp(void);                                                             // 获取当前进程的进程组号

pid_t setgpid( pid_t gpid);                                                  // 修改当前进程的进程组号

pid_t getsid(void);

pid_t setsid(void);

pid_t tcgetpgrp(int filedescrible);                                        //  获取当前前台进程组的进程组号

pid_t tcsetpgrp(int filedescrible, pid_t pgrpid);                // 设置当前前台进程组的进程组号


6. 进程用户属性

linux文件系统中,每个文件都有相应的权限。可以通过ls -l  {filename} 来查看

类似的,每一个进程也有这些权限区别:

RUID: Real User ID,进程的真实用户ID。

EUID: 进程的有效用户ID

GID: 进程的用户组ID

EGID : 进程的有效用户组ID 








Logo

更多推荐