进程概述,父子进程

可以通过ps  pstree参看当前系统在执行的进程

获取进程标识的函数:

1、获取进程ID

pid_t getpid(void);

2、获取进程父进程的ID

pid_t getppid(void);

3、获得进程的实际用户ID

uid_t getuid(void);

4、获得进程的有效用户ID

uid_t geteuid(void);

5、获取进程的实际组ID

gid_t getgid(void);

6、获取进程的有效组ID

gid_t getegid(void);

------------------------------

实际用户ID(uid)标识运行该进程的用户

有效用户ID(euid)标识以什么用户身份来运行进程。例如,某个用户A,运行了一个程序,而这个程序以root身份来运行的,这程序运行时就具有root权限,此时实际用户ID是A用户的ID

而有效用户ID是root用户ID

实际组ID(gid)他是实际用户所属组的组ID

有效组ID(egid)他是有效用户所属组的组ID

---------------------------------------------------

linux进程的结构

代码段+数据段+堆栈段

代码段:存放程序的可执行代码

数据端:存放程序的全局变量,常量,静态变量

堆栈段:堆用于存放动态分派的内存。 栈用于函数调用,存放函数的参数,函数内部定义的局部变量。

-------------------------------------------------------------

进程的状态:

1、R (runnable)运行状态,程序正在运行或在运行队列中等待运行

2、S(sleeping)可中断等待状态,程序正在等待某个事件完成(如等待数据到达),等待过程中可以被信号或定时器唤醒

3、D(uninterruptible sleep)不可中断等待状态,程序正在等待某个事件完成,等待过程中不可以被信号或定时器唤醒,必须等待

直到等待的事情发生。

4、Z(zombile)僵死状态,进程已终止,但进程描述符依然存在,直到父进程调用wait()函数后释放。

5、T(traced or stopped)停止状态,进程因为收到SIGSTOP,   SIGSTP,    SIGIN,    SIGTOU信号后停止运行或者

该进程正在被跟踪(调试程序时,进程处于被跟踪状态)

ps指令的结果:

ps -eo pid,stat

494 Sl
495 S<
560 S
585 S
635 S
665 S<
688 Ss
749 S<
760 Ss
762 S
766 Ss

后缀字符的意思:

<(高优先级进程)

N(低优先级进程)

L(内存锁页,即页不可以被换出内存)

s(该进程为会话首进程)

l(多线程进程)

+(高优先级进程)

<(进程位于前台进程组)

例如:Ssl说明该进程处于可中断等待状态,且该进程为会话首进程,而且是一个多线程的进程。

原文地址:https://www.cnblogs.com/zhangxuan/p/6386589.html