gpt4 book ai didi

c - Dameon 进程是否正在占用 RAM 中的内存,如果那里有 Daemons 进程的数量,那么 INIT 如何成为所有守护进程的父进程

转载 作者:太空宇宙 更新时间:2023-11-04 10:43:52 25 4
gpt4 key购买 nike

#include <stdio.h>
#include <signal.h>
void my_isr(int n)
{
printf("in isr pid=%d ppid=%d signal#=%d\n",getpid(),getppid(),n);
}
main()
{
printf("hello %d and bash id : %d\n",getpid(),getppid());
signal(SIGHUP,my_isr);
while(1);
}
achul@achul:~/chennai/linux/lan/sm_assignment$ ./a.out
hello 4220 and bash id : 4150

achul@achul:~/chennai/linux/lan/sm_assignment$ ps -el | grep 4220
0 R 1000 4220 1 63 80 0 - 501 - ? 00:01:22 a.out

在这里,我首先将 SIGHUP 发送到 bash,例如“kill -1 4150”,因此无论那里有什么进程,都在接收 SIGHUP .. 好的,现在进程 4220 没有任何 PTS(控制终端)。我怀疑是否有守护进程的数量,它显示所有父进程都是 INIT(1),那么 INIT 如何管理并且不会在 RAM 中浪费不必要的内存?

最佳答案

几乎不清楚。但是(大致):

  • 当您终止 shell 时,您正在终止一个 session 领导进程,而这通常会终止它的所有子进程。如果这创建了孤立进程,它们将被 init 采用。
  • init 的一个任务是 wait() 以终止其子进程(无论是否采用),这是为了正确清理进程表以避免僵尸。
  • 当一个进程终止时,它的所有地址空间都被释放(每个资源都被释放),所以它不再使用任何内存,除了内核进程表中的几个字节(仅当处于僵尸状态时)。

关于c - Dameon 进程是否正在占用 RAM 中的内存,如果那里有 Daemons 进程的数量,那么 INIT 如何成为所有守护进程的父进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33896254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com