当前位置: 首页 > news >正文

守护进程深度分析

思考

代码中创建的会话,如何关联控制终端?

新会话关联控制终端的方法

会话首进程成功打开终端设备 (设备打开前处于空闲状态)

  • 1、关闭标准输入输出和标准错误输出
  • 2、将 stdin 关联到终端设备:STDIN_FILENO => 0
  • 3、将 stdout 关联到终端设备:STDOUT_FILENO => 0
  • 4、将 stderr 关联到终端设备:STDERR_FILENO => 0

一些相关推论

新会话关联控制终端后,会话中所有进程生命期与控制终端相关

只有会话首进程能够关联控制终端 (会话中的其他进程不行)

进程的标准输入输出与标准错误输出可以进程重定向

  • 由描述符 0,1,2 决定重定向的目标位置 (按顺序打开设备)
  • 控制终端与进程的标准输入输出以及标准错误输出无直接关系

一个大胆的想法

代码示例

会话与终端深度实验

什么是守护进程 (Daemon) ?

守护进程是系统中执行任务的后台进程

  • 不与任何终端相关联 (不接收终端相关的信号)
  • 生命周期长,一旦启动,正常情况下不会终止 (直到系统退出)
  • Linux 大多服务器使用守护进程实现 (守护进程名以后缀 d 结尾)

守护进程的创建步骤

1、通过 fork() 创建新进程,成功后,父进程退出

2、子进程通过 setsid() 创建新会话

3、子进程通过 fork() 创建孙进程 (肯定不是会话首进程)

4、孙进程修改模式 umask(),改变工作目录为 "/"

5、关闭标准输入输出和标准错误输出

6、重定向标准输入输出和标准错误输出 ("/dev/null")

守护进程关键点分析

父进程创建子进程是为了创建新会话

子进程创建孙进程是为了避免产生控制进程

孙进程不是会话首进程,所以不能关联终端

重定向操作可以避开奇怪的进程输出行为

创建守护进程

相关文章:

守护进程深度分析

思考 代码中创建的会话,如何关联控制终端? 新会话关联控制终端的方法 会话首进程成功打开终端设备 (设备打开前处于空闲状态) 1、关闭标准输入输出和标准错误输出2、将 stdin 关联到终端设备:STDIN_FILENO > 03、将 stdout 关联到终端设…...

SpringAMQP

SpringAMQT RabbitMQ安装与部署RabbitMQ结构简单队列模型 SpringAMQP依赖引入配置RabbitMQ连接信息基本模型简单队列模型WorkQueue模型 发布订阅模型FanoutExchangeDirectExchangeTopicExchange 消息转换器 消息队列是实现异步通讯的一种方式,我们将从RabbitMQ为例开…...

深入探索Sharding JDBC:分库分表的利器

随着互联网应用的不断发展和用户量的不断增加,传统的数据库在应对高并发和大数据量的场景下面临着巨大的挑战。为了解决这一问题,分库分表成为了一个非常流行的方案。分库分表主流的技术包括MyCat和Sharding JDBC。我们来通过一张图来了解这两者有什么区…...

Java后端模拟面试 题集④

1.你先作个自我介绍吧 面试官您好,我叫张睿超,来自湖南长沙,大学毕业于湖南农业大学,是一名智能科学与技术专业的统招一本本科生。今天主要过来面试贵公司的Java后端开发工程师岗位。 大学里面主修的课程是Java、Python、数字图…...

中国5G产业全景图谱报告2022_挚物AIoT产业研究院

中国5G产业全景图谱报告2022_挚物AIoT产业研究院 产业结构 5G 产业结构主要包括接入网、传输网、核心网、电信运营商、网络配套服务商、5G 应用生态及产业服务 7 个主要板块。根据各版块中主要市场参与者提供的产品和服务,又下分子版块。 (1&#xff…...

设计链表复习

设计链表 class ListNode {int val;ListNode next;public ListNode() {}public ListNode(int val) {this.val val;}public ListNode(int val, ListNode next) {this.val val;this.next next;}}class MyLinkedList {//size存储链表元素的个数int size;//虚拟头节点ListNode…...

在 Visual Studio Code (VS Code) 中设置

在 Visual Studio Code (VS Code) 中设置代理服务器的详细教程如下: 打开 Visual Studio Code。 在顶部菜单栏中,点击 "File"(文件) > "Preferences"(首选项) > "Settings…...

2023年拼多多双11百亿补贴新增单件立减玩法介绍

2023年拼多多双11百亿补贴新增单件立减玩法介绍 拼多多启动了11.11大促活动,主题为“天天11.11,天天真低价”。消费者享受多重优惠,包括满减、百亿补贴和单件立减等。百亿补贴新增玩法,有超过20000款品牌商品参与单件立减活动。 …...

面试题 01.06. 字符串压缩

​​题目来源: leetcode题目,网址:面试题 01.06. 字符串压缩 - 力扣(LeetCode) 解题思路: 计算压缩后的字符串长度,如果该长度小于原字符串长度,返回压缩后的字符串,否则…...

那些你面试必须知道的webpack知识点

目录 1、webpack介绍和简单使用1.1 什么是webpack?1.2 安装webpack1.3 简单使用一下webpack 2、webpack的入口与输出2.1 入口(entry)2.2 输出(output) 3、入口多种配置方法3.1 多文件打包成一个文件3.2 多文件打包成多文件 4、loader的概念5、压缩打包HTML5.1 使用步…...

十四、队列函数

1、概述 (1)使用队列的流程:创建队列、写队列、读队列、删除队列。 2、创建 队列的创建有两种方法:动态分配内存、静态分配内存。 2.1、动态分配内存 (1)函数:xQueueCreate,队列的内存再函数内部动态分配。 (2)函数原型如下&…...

使用高防服务器有什么好处?103.216.155.x

为什么建议租用高防服务器 第一,高防服务器由于业务的特殊性,本身机器的配置要求高,服务器的价格相比普通的贵,而且,机器还有维护费、托管费等,这会让运营的成本上升。 第二,租用高防服务器&a…...

Android笔记(七)Android JetPack Compose组件搭建Scaffold脚手架

在去年2022年曾发布一篇关于脚手架的文章:“Android JetPack Compose组件中Scaffold的应用” 。但是Android的版本从12变更到13及以上版本,导致一些细节的实现存在不同。在本文中,将从头开始介绍整个脚手架的搭建过程。 一、新建项目模块 在…...

Git合并某个分支上的某个提交

1. 首先&#xff0c;确保你当前所在的分支是你要合并分支的父分支。你可以使用以下命令切换到父分支&#xff1a; git checkout <父分支名称> 2. 确保你要合并的分支是可用的。你可以使用以下命令查看所有可用的分支&#xff1a; git branch -a 这将显示所有本地和远程…...

在pytorch中对于张量维度的理解

原文参考链接&#xff1a; https://blog.csdn.net/qq_36930921/article/details/121670945. https://zhuanlan.zhihu.com/p/356951418 张量的计算&#xff1a;https://zhuanlan.zhihu.com/p/140260245 学习过程中对知识的补充学习&#xff0c;谨防原文失效&#xff0c;请大家支…...

JAVA高级教程Java HashMap表达式(7)

目录 7、HashMap的使用students类 7、HashMap的使用 students类 package Map01;import java.util.Objects ;public class Students implements Comparable<Students>{private String name;private int stuNO;public Students() {}public Students(String age, int stuN…...

【iOS】JSON解析

JSON在Web开发和网络通信和传输中广泛应用&#xff0c;常用于存储和传输数据&#xff0c;这些数据一般也都是JSON格式&#xff0c;可以说绝大多数网络请求传输的数据都是JSON格式 在之前有关网络请求文章中&#xff0c;实现了网络数据加载流程&#xff0c;并对加载下来的JSON数…...

华为OD 最大差(100分)【java】A卷+B卷

华为OD统一考试A卷+B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应20022部分考题以及新出的题目,A卷对应的是新出的题目。 我将持续更新最新题目 获取更多免费题目可前往夸克网盘下载,请点击以下链接进入: 我用夸克网盘分享了「华为O…...

打印新闻标题,使用封装get、set方法,打印前15个字符串

package day21; import java.util.ArrayList; import java.util.Collections;/*** author monian* Wo yi wu ta,wei shou shu er!*/ public class Homework01 {SuppressWarnings({"all"})public static void main(String[] args) {News news1 new News("新冠确…...

FL Studio21中文版本好用吗?值不值得下载

今天&#xff0c;我从一个FL Studio忠实且还算资深的用户角度&#xff0c;来为大家深度介绍并评测一下FL Studio的性能以及我四年的使用感受。 FL Studio是一款集剪辑、编曲、录音、混音一体的全能DAW&#xff08;数字音频工作站&#xff09;。其所有界面都是支持100%矢量化的…...

Windows更新故障智能修复方案:自动化重置工具完全指南

Windows更新故障智能修复方案&#xff1a;自动化重置工具完全指南 【免费下载链接】Script-Reset-Windows-Update-Tool This script reset the Windows Update Components. 项目地址: https://gitcode.com/gh_mirrors/sc/Script-Reset-Windows-Update-Tool Windows更新卡…...

Obsidian终极B站视频插件:3步实现笔记内高清播放

Obsidian终极B站视频插件&#xff1a;3步实现笔记内高清播放 【免费下载链接】mx-bili-plugin 项目地址: https://gitcode.com/gh_mirrors/mx/mx-bili-plugin 想在Obsidian知识库中直接观看B站视频内容吗&#xff1f;Media Extended B站插件为您提供了完美的解决方案。…...

终极Win11系统优化指南:深入解析Win11Debloat架构与技术实现

终极Win11系统优化指南&#xff1a;深入解析Win11Debloat架构与技术实现 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter …...

VS Code写LaTeX论文,这5个隐藏技巧让你的效率翻倍(LaTeX Workshop进阶玩法)

VS Code写LaTeX论文&#xff1a;5个隐藏技巧让你的效率翻倍 在学术写作的漫长旅程中&#xff0c;工具的选择往往决定了效率的上限。对于LaTeX用户而言&#xff0c;VS Code配合LaTeX Workshop插件已经成为了许多研究者的首选组合。但大多数人仅仅停留在基础功能的使用上&#x…...

FreeRTOS临界区避坑指南:taskENTER_CRITICAL()用不对,你的系统可能随时崩溃

FreeRTOS临界区避坑指南&#xff1a;taskENTER_CRITICAL()用不对&#xff0c;你的系统可能随时崩溃 调试嵌入式系统时最令人抓狂的瞬间&#xff0c;往往是那些看似毫无规律的随机崩溃——比如某个传感器数据偶尔错位、系统突然卡死、或是中断服务程序莫名丢失事件。上周我就遇到…...

B站视频下载神器:三步搞定高清视频与音频永久收藏

B站视频下载神器&#xff1a;三步搞定高清视频与音频永久收藏 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors/bi/Bi…...

如何用RyzenAdj解锁AMD笔记本隐藏性能?实用电源管理技巧大揭秘

如何用RyzenAdj解锁AMD笔记本隐藏性能&#xff1f;实用电源管理技巧大揭秘 【免费下载链接】RyzenAdj Adjust power management settings for Ryzen APUs 项目地址: https://gitcode.com/gh_mirrors/ry/RyzenAdj RyzenAdj是一款专为AMD Ryzen移动处理器设计的开源电源管…...

小白程序员必看!收藏这份AI大模型学习进阶指南,轻松入行!

本文针对AI大趋势下&#xff0c;大学生如何快速进入AI领域的问题&#xff0c;提出解决方案。文章从专业背景出发&#xff0c;将学生分为技术背景和非技术背景两类&#xff0c;并分别给出适合的AI岗位选择&#xff0c;如算法工程师、AI产品经理等。随后&#xff0c;针对技术岗和…...

【力扣hot100】【Leetcode 15】三数之和|暴力枚举 双指针 算法笔记及打卡(14/100)

【力扣】【Leetcode 15】三数之和&#xff5c;暴力枚举 | 双指针 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有和为 0 且不重复的三元…...

Vivado TCL脚本进阶:把JTAG to AXI Master IP变成你的自动化调试神器

Vivado TCL脚本进阶&#xff1a;把JTAG to AXI Master IP变成你的自动化调试神器 在FPGA开发的世界里&#xff0c;调试效率往往决定着项目成败。当传统手动操作遇到复杂状态机验证或批量寄存器测试时&#xff0c;工程师们常常陷入重复劳动的泥潭。而Xilinx Vivado中那颗被低估的…...