*在用户访问端口时,操作系统会形成对应的session,在其的内部进一步形成bash等进程 

*一个会话只有一个前台进程,可以有多个后台进程,前台与后台进程的区别在于谁拥有键盘的使用权

*前台与后台进程都可以访问显示器但是后台无法访问标准输入获取数据

下面介绍相关接口

 示例代码

前台运行

后台运行 

查看后台进程:

在 Linux 系统中, jobs  是一个常用的 shell 命令,用于查看当前终端会话中在后台运行或暂停的作业(进程) 

后台调前台:

-  fg :不加参数时,默认操作  jobs  列表里带  +  标记(当前默认)的后台作业,将其移到前台执行。

-  fg %作业号 :指定作业号(通过  jobs  查看的  [n]  编号),精准调对应后台作业到前台,例  fg %1  调作业号为  1  的任务。

  恢复暂停任务:
按  Ctrl + Z  暂停前台任务 → 用  bg  n  让它后台继续,或  fg %n  直接前台恢复执行。 

观察图片

ppid及pid我们已经很熟悉,pgid(进程组id) sid(session id)则较为陌生。

进程组可以简单理解为:把多个相关的进程(比如一个程序启动后自己创建的子进程,或共同完成一项任务的多个进程)打包成的一个“小组”。

这个“小组”有两个关键特点:

- 每个小组有唯一的编号(进程组ID),通常用组里第一个创建的进程(组长)的ID来标识。
- 对这个小组操作(比如发停止信号),组里所有进程都会“收到”并响应。

比如你用命令启动一个程序,程序运行时又开了几个子进程,这些进程就自动组成一个进程组,方便统一管理(比如关闭终端时一起结束,或用快捷键统一暂停)。

远端登陆session退出时后台进程理论也退出,但是,远端情况实际上后台进程没有退出终止,而是托孤给了操作系统,但是仍然会受用户登陆影响其属性,想让后台进程不受到任何用户登录和注销的影响,就需要用到守护进程,原理是后台切会话

接口setsid:

setsid  是 Unix/Linux 系统中的一个系统调用(也有同名命令),核心作用是创建一个新的会话(session),并让调用它的进程成为这个会话的“领头进程”(session leader),同时脱离原有的进程组和控制终端。

简单理解

可以把它看作是让进程“独立门户”的操作:

- 原本进程可能属于某个进程组,受某个终端(比如命令行窗口)控制(终端关闭时,进程可能被终止)。
- 调用  setsid  后,进程会脱离原来的进程组,自己成立一个新的会话,并且不再有控制终端。这意味着它不会被终端的关闭、退出信号影响,适合作为后台服务(如守护进程)运行。

关键效果

1. 进程成为新会话的领头进程;
2. 进程成为一个新进程组的组长;
3. 进程与原控制终端彻底脱离(不再接收终端的信号,比如  Ctrl+C  不会终止它)。

典型用途

最常见的是创建“守护进程”(daemon),比如服务器程序。例如,后台运行的 Web 服务器、数据库服务等,通过  setsid  脱离终端控制,即使关闭启动它的终端,进程也能继续运行。

命令行中也可以直接使用  setsid  命令,比如  setsid sleep 1000 ,这个  sleep  进程会脱离当前终端,在后台独立运行。

手撕代码如下 

分析

2:后台切会话时,不能是前台任务向绘画转变,因此我们需要保证,这个转会话的进程不能是第1个创建的,因此我们以紫进程进行切换就可以保证不是第1个进程进行切换 

4:在进程的运行过程中,可能会出现许多的输出打印情况,而这些输出的内容,我们不需要他在显示器上呈现,因而我们就需要重载文件描述符0.1.2,将这些内容输进垃圾桶中,及/dev/null

系统接口

“daemon”(守护进程),它是运行在操作系统后台的一种特殊进程,主要特点和作用如下:

核心特点

- 后台运行:不依赖终端,启动后在后台持续工作,用户通常看不到它的界面。
- 自动启动:很多守护进程会随系统启动而运行,比如服务器的网络服务进程。
- 独立稳定:脱离终端控制,即使关闭启动它的终端,也能继续运行,且通常会长期稳定工作,除非被手动终止或系统关闭。


常见用途

- 提供系统服务:比如 Linux 中的  sshd (远程登录服务)、 httpd (网页服务器),Windows 中的“服务”(如自动更新服务)。
- 处理后台任务:比如定时任务调度( crond )、日志收集、网络数据监听等。

简单说,守护进程就像“隐形的服务员”,在后台默默处理系统或应用的各种任务,保证服务持续可用。 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/93517.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/93517.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/93517.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring data mongodb 入门使用手册

<!--pom.xml引入依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>文档映射类Student.java import lombok.Data; import lombok.NoArgsCons…

Fastjson2常用操作大全:对象、字符串、集合、数组、Map与JSON互转实战

高性能&#xff1a; 核心解析器和生成器经过深度优化&#xff0c;性能远超许多同类库。 功能丰富&#xff1a; 支持标准JSON、JSONPath查询、泛型处理、日期格式化、自定义序列化/反序列化等。 易用性&#xff1a; API 设计简洁直观&#xff0c;JSON 工具类提供了最常用的 toJS…

大模型——字节Coze重磅开源!Dify何去何从

大模型——字节Coze重磅开源!Dify何去何从 想必很多人盼了很久,就在昨晚,字节Coze终于开源了!Coze Studio 是字节跳动新一代 AI Agent 开发平台扣子(Coze)的开源版本。 提供 AI Agent 开发所需的全部核心技术:Prompt、RAG、Plugin、Workflow,使得开发者可以聚焦创造 A…

NaVid——基于单目RGB捕获的视频让VLM规划「连续环境中VLN」的下一步:无需地图/里程计/深度信息(含MP3D/R2R/RxR,及VLN-CE的详解)

前言 因为我司「七月在线」准备于25年7月底复现下NaVILA&#xff0c;而在研究NaVILA的过程中&#xff0c;注意到了这个NaVid 虽然NaVid目前已经不是VLN sota了&#xff0c;但其首次展示了VLM在无需地图、里程计或深度输入的情况下&#xff0c;能够实现优秀的导航性能且对后来…

【Vue2】结合chrome与element-ui的网页端条码打印

所有文章都是免费查看的&#xff0c;如果有无法查看的情况&#xff0c;烦请联系我修改哈~ 序言 为什么要做这个呢&#xff1f;因为所需要的条码打印功能比较简单&#xff0c;符合需要即可&#xff0c;但是呢网上查看了发现并没有合适的开源项&#xff0c;其他成熟的软件收费又超…

循环神经网络——动手学深度学习7

环境&#xff1a;PyCharm python3.8 &#x1f449;【循环神经网络】(recurrent neural network&#xff0c;RNN) RNN通过 引入状态变量存储过去的信息和当前的输入&#xff0c;从而可以确定当前的输出。状态变量捕捉序列的时序依赖&#xff0c;是处理文本、时间序列等数据的…

Java面试宝典:MySQL8新特性底层原理

一、降序索引的革新 1.1 降序索引的核心概念 MySQL 8.0 实现了真正的降序索引(Descending Index) 支持,这是数据库引擎层面的重大改进: 存储引擎支持:仅 InnoDB 存储引擎支持降序索引,且仅适用于 B+Tree 索引结构 语法显式声明:通过 DESC 关键字显式指定字段的排序方向…

前端-html+CSS基础到高级(三)html基础和开发工具

一、html语法规范什么是注释?在同学上课学习时&#xff0c;我们会在书本段落间记录内容的注解&#xff0c;方便下次看到此处理解。问题&#xff1a;我们在书本段落间记录下的注解是为了给谁看的&#xff1f; 下次的阅读课本者&#xff08;自己&#xff09;。程序员在写代码时也…

-Dspring.output.ansi.enabled=ALWAYS 设置彩色日志不生效

-Dspring.output.ansi.enabledALWAYS 设置彩色日志不生效 问题原因&#xff1a;使用的自定义的 logback-spring.xml日志需要改一下 <?xml version"1.0" encoding"UTF-8"?> <configuration><appender name"STDOUT" class"c…

C# 判断语句深度解析

C# 判断语句深度解析 引言 在编程领域,C# 是一种广泛使用的面向对象的编程语言,常用于构建各种应用程序,从桌面到移动应用,再到网站服务。C# 的核心特性之一是其强大的控制流机制,其中包括条件判断。本文将深入探讨 C# 中的判断语句,包括它们的类型、使用场景以及最佳实…

Ambari 3.0.0 全网首发支持 Ubuntu 22!

本月我们团队带来了一个重磅进展&#xff1a;Ambari 3.0.0 全网首发支持 Ubuntu 22&#xff01; 经过数月筹备和持续迭代&#xff0c;终于让 Ambari 以及大数据基础组件可以顺利运行在 Ubuntu 22 上。 需求来源&#xff1a;用户呼声决定研发方向 年初有位小伙伴私信我们&#x…

Android Camera capture

序 想了下还是挤挤时间&#xff0c;把相机这基础流程写完吧&#xff0c;前面每篇写的都还是挺耗时的&#xff08;就是累了&#xff0c;想偷偷懒&#xff0c;哈哈哈哈&#xff09;&#xff0c;那接着前面的几篇文章&#xff0c;给这一些列写上一个中规中矩的结局吧~ APP层 以下是…

落霞归雁思维框架应用(十) ——在职考研 199 管综 + 英语二 30 周「顺水行舟」上岸指南

落霞归雁思维框架应用&#xff08;十&#xff09; ——在职考研 199 管综 英语二 30 周「顺水行舟」上岸指南 CSDN 首发 | 作者&#xff1a;落霞归雁 | 2025-08-01 开场&#xff1a;把 199英二 从“两座大山”变成“两条顺流” 在职党最怕两句话&#xff1a; “管综题量太大…

自动调优 vLLM 服务器参数(实战指南)

1. 操作步骤 该脚本能够自动搜索最优的vLLM服务器参数组合&#xff08;包括max-num-seqs和max-num-batched-tokens&#xff09;&#xff0c;在满足端到端延迟和前缀缓存命中率等要求的同时&#xff0c;实现吞吐量最大化。 1.1 前提条件 克隆 vLLM 并切到目标分支git clone http…

【腾讯云】EdgeOne免费版实现网站加速与安全防护

作为一名个人站长&#xff0c;我深知在有限的预算下如何为网站提供稳定、快速的服务是关键。腾讯云推出了 EdgeOne免费版 https://edgeone.ai/zh/redemption已经有一段时间。结合我的实际体验&#xff0c;我想从国内备案域名的角度&#xff0c;分享一下如何利用这个工具提升网站…

修改gitlab默认的语言

文章目录网上的方法1. 采用数据库触发器的方法2. 登录pg库2.1 查看表2.2 创建function2.3 创建触发器2.4 修改历史数据网上的方法 网上修改/opt/gitlab/embedded/service/gitlab-rails/config/application.rb的方法&#xff0c;我试了&#xff0c;没生效&#xff0c;没进一步研…

ndk { setAbiFilters([‘armeabi-v7a‘, “arm64-v8a“]) }

deepseek回答&#xff1a; 好的&#xff0c;我现在需要解释build.gradle中这段ndk配置代码的含义。首先&#xff0c;用户提供的代码片段是&#xff1a; ndk { setAbiFilters([‘armeabi-v7a’, “arm64-v8a”]) } 我的第一步是理解每个部分的作用。ndk块在Android构建文件中用于…

k8s 1.30 通过helm部署ingress-controller-4.12.1

一、基本概念k8s集群中&#xff0c;ingress作为集群内服务对外暴漏的访问接入点&#xff0c;几乎承载着集群内服务访问的所有流量。ingress是k8s中的一个资源对象&#xff0c;用来管理集群外部访问集群内部服务的方式。可以通过ingress资源来配置不同的转发规则&#xff0c;从而…

Gitee:本土开发者生态的崛起与数字化转型新引擎

Gitee&#xff1a;本土开发者生态的崛起与数字化转型新引擎 在数字化转型浪潮席卷全球的当下&#xff0c;代码托管平台已从单纯的代码存储工具演变为企业技术创新的基础设施。作为中国领先的一站式DevOps平台&#xff0c;Gitee以其本地化优势和创新功能矩阵&#xff0c;正重新定…

Servlet HTTP 状态码详解

Servlet HTTP 状态码详解 引言 在Web开发中,HTTP状态码是服务器响应客户端请求时返回的状态信息。这些状态码有助于开发者了解请求处理的结果,并针对不同的状态码进行相应的处理。Servlet作为Java Web开发的重要技术之一,理解HTTP状态码对于开发高质量的Web应用至关重要。…