Linux中 进程正在运行,ps命令显示S+??? 10

我的loop程序很简单,如下所示#include<stdio.h>intmain(){while(1){printf("hello\n");}return0;}这个程序就... 我的loop程序很简单 ,如下所示
#include <stdio.h>
int main()
{
while (1)
{

printf("hello\n");
}
return 0;
}
这个程序就一直打印hello,而已。我在一个终端上运行它,
在另外一个终端用ps观察进程状态,却总是说处于S+(前台睡眠),不知Linux为什么这样安排?还是有别的原因?
如果说ps观察的只是瞬间的话,我用top来查看也是一样的结果,求大侠 解释。。。。?
[user@MagicLinux apuetest]$ ps u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
user 9089 0.0 0.3 5852 1616 pts/1 Ss 07:28 0:01 /bin/bash
user 10306 0.0 0.2 5548 1484 pts/2 Ss 08:55 0:00 /bin/bash
user 12418 4.4 0.0 1392 296 pts/2 S+ 11:36 0:00 ./loop
user 12422 0.0 0.1 5488 832 pts/1 R+ 11:36 0:00 ps u
top的结果是
4501 user 25 0 55916 18m 12m R 86.7 3.7 8:18.14 konsole
3520 root 15 0 35532 14m 2108 S 8.0 3.0 7:39.54 X
12418 user 15 0 1392 296 236 S 4.0 0.1 0:19.51 loop
3732 user 15 0 16608 4740 496 S 1.3 0.9 0:14.11 fcitx
1 root 16 0 1540 528 464 S 0.0 0.1 0:01.65 init
2 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
3 root 10 -5 0 0 0 S 0.0 0.0 0:00.77 events/0
4 root 11 -5 0 0 0 S 0.0 0.0 0:00.05 khelper
5 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kthread
7 root 10 -5 0 0 0 S 0.0 0.0 0:00.09 kblockd/0
8 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 kacpid
175 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 khubd
展开
 我来答
旧时旧事的回忆
2021-12-16
知道答主
回答量:1
采纳率:0%
帮助的人:415
展开全部
首先,进程运行就代表从就绪队列中获取到了CPU资源,即被调度,当运行的时候,CPU从内存中获取该进程的代码和数据,进行处理之后,重新写入到内存中,然后你使用了printf库函数,这是一次IO操作,而且是站在进程角度的IO操作,那么就要遵守冯诺依曼体系结构,因为外设的传输效率低于内存,所以,这里处在了等待显示器取走数据并打印的过程,所以,你的进程状态变成了S,这个时候,CPU去处理其他的事情,当你的数据被显示器打印的时候,你的进程重新被放入就绪队列,然后CPU的轮转调度(也就是并发下各进程时间片到了),轮到你的时候,又是同样的一次,因为时间很快,所以你看到的都是S
我的少年百分九NPC
2020-06-08
知道答主
回答量:4
采纳率:0%
帮助的人:3482
展开全部
这是由于 cpu 时间片的原因,你看的时候,你的程序正在休眠等待cpu调用中.....你用top命令,你会看到当前进程的变化,有的时候是S 有的时候是R
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一切从来vip
2012-05-27
知道答主
回答量:29
采纳率:0%
帮助的人:6.8万
展开全部
怎么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式