C++进程状态标记R+中+的含义是什么?
关于ps进程状态中
+标记的解释 先看你的测试代码:
int main() { while(1); }
用g++ test.cpp编译后运行,执行ps -aux | grep a.out看到进程状态为R+,其中R表示进程处于运行或可运行状态(在运行队列中),而你疑惑的+标记,结合ps手册的说明,它代表进程处于前台进程组,具体含义可以从以下几点理解:
前台进程组的核心意义
前台进程组是和当前终端会话直接关联的进程组:
- 它会接收终端的输入,并且终端的信号(比如
Ctrl+C触发的SIGINT、Ctrl+Z触发的SIGTSTP)会直接发送给前台进程组内的所有进程。 - 当你直接在终端里运行
./a.out时,这个进程就会成为当前终端的前台进程,此时终端会被它占据,你无法输入其他命令,直到它结束或者被放到后台(比如用Ctrl+Z暂停后再执行bg命令)。
ps手册中完整的进程状态码说明(翻译版)
进程状态码
以下是s、stat和state输出标识符(标题为"STAT"或"S")用于描述进程状态的不同取值:
D:不可中断睡眠(通常为IO操作)I:空闲内核线程R:运行或可运行(位于运行队列中)S:可中断睡眠(等待事件完成)T:被作业控制信号停止t:在追踪期间被调试器停止W:分页(2.6.xx内核后不再有效)X:死亡(不应被观测到)Z:僵死进程,已终止但未被父进程回收在BSD格式及使用
stat关键字时,可能会显示额外字符:
<:高优先级(对其他用户不友好)N:低优先级(对其他用户友好)L:页面被锁定在内存中(用于实时和自定义IO)s:是会话领导者l:是多线程(使用CLONE_THREAD,如NPTL线程库)+:处于前台进程组
内容的提问来源于stack exchange,提问作者3088 K
相关产品推荐
相关产品推荐

