当前位置:首页 » 操作系统 » linux0进程

linux0进程

发布时间: 2022-07-22 06:26:39

linux下的PID=0的进程是什么进程

linux全局下没有pid=0的进程
linux下的pid起始数为1
永远是init进程
编程的时候
pid=0
同一个进程组的进程

② Linux中的进程问题,以及exit(0); 和sleep(5);

俺跟你解释一下:

fork是一个跟当前进程一模一样的进程,包括当前进程的所有状态(有特殊设置就不会拷贝,如文件标识)。子进程如果不设置新的执行程序,会继续执行fork之后的代码,注意前面提过的跟父进程一模一样的代码。

pid==0代表是子进程,因此子进程会执行这段代码:

if(pid==0)
{
printf("child!!! ");
//这里会造成子进程的主线程,main执行线程,阻塞5秒
sleep(5);
exit(0);
}

pid > 0 代表是父进程,因此父进程继续执行的代码为:

if(pid>0)
{
//此处必须等待子进程结束,子进程调用exit(0),时会通知父进程继续执行
//属于进程间通讯、同步的一个手段之一。那子进程等待5秒被唤醒,执行exit(0)
//父进程收到通知,获取到子进程的退出状态,继续就会printf,基本也就是等待了5秒
//然后父进程return0等价于exit(0)正常结束
wait(NULL);//不这样写,父进程直接结束可能会产生僵尸进程,也可能变成孤儿进程由
//由init进程领养,并正确结束。通用的做法必须wait。根据操作系统以及版本不同处理
//方式可能不一样,如aix可能就会有僵尸进程产生
printf("father!!! ");
}

③ linux 进程的几种状态

Linux内核中定义了以下几种状态:
#define TASK_RUNNING 0
#define TASK_INTERRUPTIBLE 1
#define TASK_UNINTERRUPTIBLE 2
#define TASK_ZOMBIE 4
#define TASK_STOPPED 8

其中:
TASK_RUNNING是就绪态,进程当前只等待CPU资源。

TASK_INTERRUPTIBLE和TASK_UNINTERRUPTIBLE都是阻塞态,进程当前正在等待除CPU外的其他系统资源;前者可以被信号唤醒,后者不可以。

TASK_ZOMBIE是僵尸态,进程已经结束运行,但是进程控制块尚未注销。

TASK_STOPPED是挂起状态,主要用于调试目的。进程接收到SIGSTOP信号后会进入该状态,在接收到SIGCONT后又会恢复运行。

④ 为什么Linux的0号进程永远不能被删除

这个是系统的启动进程
如果你可以删除这个进程,那你一回车系统就直接crash了

⑤ 你好,请问Linux下怎么在终端上看到0号进程

0号进程即为idle进程或swapper进程,也就是空闲进程 idle是一个进程,其pid为0
pidof programe-name(获得想了解的进程(programe-name)的PID)
cd /proc/$PID/fd(会看见文件描述符)
ls -l 得到文件描述符指向的实际文件,即当前进程打开的文件
也可以试试 lsof -c programe-name 看看《Linux就该这么学》 里面有个专栏是 Linux命令大全(手册,

⑥ linux中进程0是如何被创建的

请看 blog.csdn.net/zwjlpeng/article/details/9418229 ,解释得相当清楚。

⑦ linux第一个进程标识符为0吗

PID是进程标识符,你可以打开任务管理器,在菜单上点"查看","选择列",把PID调出来,然后就可以在任务管理器里面看到每个任务的PID了,找到PID为0,1,2,3,4,5的进程,就可以知道是哪个进程

⑧ Linux内核中进程0的主要任务是什么

总结一下有如下几个要点:
1.
进程0是所有其他进程的祖先,
也称作idle进程或swapper进程.
2.
进程0是在系统初始化时由kernel自身从无到有创建.
3.
进程0的数据成员大部分是静态定义的,即由预先定义好的INIT_TASK,
INIT_MM等宏初始化.
进程0的描述符init_task定义在arch/arm/kernel/init_task.c,由INIT_TASK宏初始化。
init_mm等结构体定义在include/linux/init_task.h内,为init_task成员的初始值,分别由对应的初始化宏如INIT_MM等初始化
Process
1
进程0最终会通过调用kernel_thread创建一个内核线程去执行init函数,这个新创建的内核线程即Process
1(这时还是共享着内核线程0的资源属性如地址空间等)。init函数继续完成剩余的内核初始化,并在函数的最后调用execve系统调用装入用户空间的可执行程序/sbin/init,这时进程1就拥有了自己的属性资源,成为一个普通进程(init进程)。至此,内核初始化和启动过程结束。下面就进入了用户空间的初始化,最后运行shell登陆界面。(注:Init进程一直存活,因为它创建和监控在操作系统外层执行的所有进程的活动。)
——————
这段对进程0的描述引用自《Understanding
The
Linux
Kernel
-
Third
Edtion》
The
ancestor
of
all
processes,
called
process
0,
the
idle
process,
or,
for
historical
reasons,
the
swapper
process,
is
a
kernel
thread
created
from
scratch
ring
the
initialization
phase
of
Linux.
This
ancestor
process
uses
the
following
statically
allocated
data
structures
(data
structures
for
all
other
processes
are
dynamically
allocated)

热点内容
一台服务器多个同段地址怎么通讯 发布:2025-01-20 16:45:58 浏览:734
i7源码 发布:2025-01-20 16:40:48 浏览:983
抽签源码 发布:2025-01-20 16:38:35 浏览:62
密码箱怎么锁住 发布:2025-01-20 16:32:17 浏览:31
编译隔离 发布:2025-01-20 16:28:54 浏览:358
从哪里看自己的qq账号和密码 发布:2025-01-20 16:22:33 浏览:400
sql语句动态 发布:2025-01-20 16:18:22 浏览:298
sql表或的语句 发布:2025-01-20 16:00:49 浏览:163
西瓜视频怎么缓存不了电影了 发布:2025-01-20 16:00:45 浏览:890
javatimer 发布:2025-01-20 15:55:56 浏览:64