孤儿,僵尸,守护线程

这篇具有很好参考价值的文章主要介绍了孤儿,僵尸,守护线程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1>孤儿进程

父进程退出后,子进程还在继续运行,那么这些正在运行的子进程就是孤儿进程
最终孤儿进程将会被init进行收养,并由init进程对它们完成收集工作,init进程相当于爷爷进程,是最原始的进程
如果想模拟场景只需: kill父进程 即可

2>僵尸进程

一个进程用过fork来创建一个子进程,如果子进程退出了,父进程没有调用wait或者waitpid去获取子进程的状态信息,那么子进程会继续留在系统中,这就称为僵尸进程
僵尸进程不占用任何内存空间,仅在进程列表中保留一个位置,记载该进程的退出状态等信息供其他进程收集,等待父进程进行回收,或者父进程结束那就init进程回收
如果父进程是一个循环不会结束,那么僵尸进行会一直保留在系统中

怎么查看僵尸进程:
利用命令 ps,可以看到有标记为的进程就是僵尸进程

3>守护进程

不与终端相关联,在系统启动是以特殊身份运行,处理系统级别的任务,避免进程被终端打断

如何成为守护进程
1.调用 fork(),创建新进程,它会是将来的守护进程.
2.在父进程中调用 exit,保证子进程不是进程组长
3.调用 setsid()创建新的会话区
4.将当前目录改成根目录(如果把当前目录作为守护进程的目录,当前目录不能被卸载他作为守护进程的工作目录)
5.将标准输入,标准输出,标准错误重定向到/dev/null.

用以下代码即可(借鉴别人代码)文章来源地址https://www.toymoban.com/news/detail-434624.html

#include <fcntl.h>
#include <unistd.h>
int daemon(int nochdir, int noclose)
{
		int fd;
		switch (fork()) {
		case -1:
		return (-1);
		case 0:
		break;
		default:
		_exit(0);
}
if (setsid() == -1)
	return (-1);
if (!nochdir)
	(void)chdir("/");
if (!noclose && (fd = open("/dev/null", O_RDWR, 0)) != -1) {
	(void)dup2(fd, STDIN_FILENO);
	(void)dup2(fd, STDOUT_FILENO);
	(void)dup2(fd, STDERR_FILENO);

	if (fd > 2)
	(void)close (fd);
	}
	return (0);
}

到了这里,关于孤儿,僵尸,守护线程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • IO进程线程第五天(8.2)进程函数+XMind(守护进程(幽灵进程),输出一个时钟,终端输入quit时退出时钟)

    1.守护进程(幽灵进程) 2.输出一个时钟,终端输入quit时退出时钟        

    2024年02月14日
    浏览(48)
  • 孤儿进程与僵尸进程

    关于进程退出有两个函数 exit和 _exit:其主要差别是在于是否直接退出。 其流程主要区别如下: 父进程运行结束,但子进程还在运行(未运行结束),这样的子进程就称为孤儿进程。 每当出现一个孤儿进程的时候,内核就把孤儿进程的父进程设置为 init ,而 init 进程会循环

    2024年02月13日
    浏览(40)
  • 【Linux】详解进程状态之僵尸进程——孤儿进程

    目录 🌞专栏导读 🌛什么是进程 ⭐什么是PCB?  🌛查看进程  🌛如何通过系统调用查看进程PID 🌛fork 🌞认识进程状态 🌛查看进程状态  🌛R状态  ⭐例如: 🌛S状态  🌛D状态  🌛T状态 🌛t状态: 🌛X状态  🌛Z状态 ⭐僵尸进程 ⭐僵尸进程的危害  🌛孤儿进程 🌟作

    2024年02月13日
    浏览(70)
  • 探索Linux下进程状态 | 僵尸进程 | 孤儿进程

    任何进程在运行时都会有自己的状态 下面的状态在kernel源代码里定义: 常见的几种状态: R运行状态(running) : 并不意味着进程一定在运行中,它表明进程要么是在运行中要么在运行队列里。 S睡眠状态(sleeping): 意味着进程在等待事件完成(这里的睡眠有时候也叫做可中断

    2024年04月17日
    浏览(37)
  • 【Linux】探索Linux进程状态 | 僵尸进程 | 孤儿进程

    最近,我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念,而且内容风趣幽默。我觉得它对大家可能会有所帮助,所以我在此分享。点击这里跳转到网站。 🎉博客主页:小智_x0___0x_ 🎉欢迎关注:👍点赞🙌收藏✍️留言 🎉系列专栏:Linux入门

    2024年02月05日
    浏览(45)
  • 【Linux】僵尸与孤儿 && 进程等待

    目录 一,僵尸进程 1,僵尸进程 2,僵尸进程的危害 二,孤儿进程 1,孤儿进程 三,进程等待 1,进程等待的必要性 2,wait 方法 3,waitpid 方法 4,回收小结 1,僵尸进程 僵死状态(Zombies)是一个比较特殊的状态。 当进程退出并且父进程(使用wait()系统调用,后面讲) 没有读取

    2024年02月04日
    浏览(36)
  • 【Linux深入剖析】进程状态---进程僵尸与孤儿

    📙 作者简介 :RO-BERRY 📗 学习方向:致力于C、C++、数据结构、TCP/IP、数据库等等一系列知识 📒 日后方向 : 偏向于CPP开发以及大数据方向,欢迎各位关注,谢谢各位的支持 进程 = taskk_stuct + 可执行程序 进程不是一直在运行的 进程放在cpu上也不会一直运行的 它可能在等待某

    2024年03月18日
    浏览(56)
  • 【Linux取经路】探索进程状态之僵尸进程 | 孤儿进程

    进程状态是指在操作系统中,一个进程所处的不同运行状态,进程状态就决定了该进程接下来要执行什么任务。常见的进程状态有以下几种: 新建状态 :进程被创建但还没有被操作系统接受和分配资源。 就绪状态 :进程已经获得了所需的资源,并等待被调度执行。 运行状

    2024年02月12日
    浏览(38)
  • 除了运行、休眠…进程居然还有僵尸、孤儿状态

    摘要: 本章我们将认识几种进程状态——运行状态、休眠状态、暂停状态、退出状态等。还要介绍两种具有惨烈身世的僵尸进程与孤儿进程~ 本文分享自华为云社区《僵尸进程?孤儿进程?为什么他有如此惨烈的身世...》,作者: 花想云 。 Linux中进程状态一般有: R(运行状

    2024年02月06日
    浏览(43)
  • 【Linux】进程状态&&僵尸进程和孤儿进程&&阻塞、挂起和运行

    个人主页 : zxctscl 如有转载请先通知 上一篇博客中提到 【Linux】进程初步理解,这次继续来分享与进程有关的知识。 Linux的进程状态就是struct task_struct内部的一个属性。 为了弄明白正在运行的进程是什么意思,我们需要知道进程的不同状态。一个进程可以有几个状态(在

    2024年04月14日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包