linux进程的基本属性
linux进程的基本属性1. linux环境下,系统运行的第一个进程名字叫 init , pid = 1,由内核产生。其余所有的进程都是通过 fork()函数产生(vfork() 也算吧)。2. 常用进程的属性有:pid ppid pgid uideuid gid egid3. 进程资源由两部分组成: 内核空间资源,用户空间资源内核空间资源
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
更多推荐
所有评论(0)