#Linux系统编程(守护进程)

(一)发行版:Ubuntu16.04.7


(二)记录:

(1)守护进程基本概念

a.守护进程是一个生存周期较长的进程,通常独立于控制终端并且周期性的执行某种任务或者等待处理某些待发生的事件。

b.多数服务都是通过守护进程实现的。

c.关闭终端,相应的进程都会被关闭,而守护进程却能够突破这种限制。

d.守护终端是运行在后台,不跟任何控制终端关联。

比如任务管理器里面VMware中正运行着几个守护进程,但是并不会跟我的控制终端关联。

(2) 如何创建一个守护进程

必须作为我们init进程的子进程。不跟控制终端交互。

a.使用fork函数创建一个新的进程,然后让父进程exit函数直接退出(造成子进程成为孤儿进程,被init进程收留)

b.调用setsid函数来在会话内创建新的进程组以摆脱原来进程组中的控制。

c.调用chdir函数,将当前的工作目录改成根目录,增强程序的健壮性。(非必要)

d.重设我们umask文件掩码,增强程序的健壮性与灵活性。(非必要)

e.关闭文件描述符,节省资源(非必要)

f.执行我们需要执行的代码

运行a.out之后以及能够正常与控制台交互,说明程序进程已经结束,但是我们用ps aux | grep a.out查看进程时发现./a.out仍然在运行。这个时候他已经不再跟控制终端交互即使程序进程结束他也存在,他就是一个守护进程

(3)进程组与会话

多个进程构成一个进程组,多个进程组构成一个会话。


(三)命令:

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>int main(void)
{pid_t pid;//1.创建一个新的进程pid=fork();//2.父进程直接退出if(pid>0)exit(0);//3.子进程调用setsid函数拜托控制终端if(pid==0){setsid();//4.更改工作目录chdir("/");//5.重新设置umask文件掩码umask(0);//6.关闭0 1 2三个文件描述符(标准输入、输出、出错)close(0);close(1);close(2);//7.执行想要执行的代码while(1){}  }return 0;}

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

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

相关文章

为什么requests不是python标准库?

在知乎上看到有人问&#xff1a;为什么requests不是python标准库&#xff1f; 这确实是部分人困惑的问题&#xff0c;requests作为python最受欢迎的http请求库&#xff0c;已经成为爬虫必备利器&#xff0c;为什么不把requests直接装到python标准库里呢&#xff1f;可以省去第…

「媒体宣传」财经类媒体邀约资源有哪些?-51媒体

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 财经类媒体邀约资源包括但不限于以下几类&#xff1a; 商业杂志和报纸&#xff1a;可以邀请如《财经》、《新财富》、《经济观察报》等主流商业杂志和报纸。这些媒体通常具有较强的品牌影…

动态内存函数的使用和综合实践-malloc,free,realloc,calloc

什么是动态内存 动态内存是指在程序运行过程中可以被分配和释放的内存空间。这与静态内存分配相对&#xff0c;静态内存分配是在程序编译时就已经确定的内存空间&#xff0c;其大小在程序运行期间固定不变。 在许多编程语言中&#xff0c;特别是在C语言中&#xff0c;动态内存…

js实现拖放效果

dataTransfer对象 说明&#xff1a;dataTransfer对象用于从被拖动元素向放置目标传递字符串数据。因为这个对象是 event 的属性&#xff0c;所以在拖放事件的事件处理程序外部无法访问 dataTransfer。在事件处理程序内部&#xff0c;可以使用这个对象的属性和方法实现拖放功能…

基于Java的校园疫情防控管理系统(Vue.js+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学生2.2 老师2.3 学校管理部门 三、系统展示四、核心代码4.1 新增健康情况上报4.2 查询健康咨询4.3 新增离返校申请4.4 查询防疫物资4.5 查询防控宣传数据 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBoot…

element+Vue2,在一个页面跳转到另一个页面,并自动选中table的某一行

需求&#xff1a;点击A页面的某处&#xff0c;跳转到B页面并选中B页面表格的某一行&#xff08;点击B页面的搜索后需要清空默认选择的状态&#xff09;环境&#xff1a;vue2、element的table&#xff0c;table允许多选知识点&#xff1a;主要使用到table的这两属性&#xff1a;…

【每日跟读】常用英语500句(100~200)

【每日跟读】常用英语500句 My apologies. 我向你道歉 Mayday. 求救 I’m begging you. 我求你了 Allow me. 让我来 That’s for sure. 那是肯定的 I wish I could. 我希望我能 Don’t leave me. 别离开我 You suck. 你太烂了 In that case. 这样的话 From now on. 从…

【工具-MobaXterm】

MobaXterm ■ MobaXterm-简介■ MobaXterm-下载安装■ MobaXterm-(Session Settings)■ SSH■ Telnet■ Rsh (remote shell)■ Xdmcp■ RDP■ VNC (Virtual Network Console)■ FTP (文件传输)■ SFTP■ Serial■ File■ Shell■ Browser■ Mosh&#xff08;Mobile Shell)■ Aw…

前端web移动端学习day04

移动 Web 第四天 01-vw适配方案 vw和vh基本使用 vw和vh是相对单位&#xff0c;相对视口尺寸计算结果&#xff0c;相对于屏幕的逻辑参数 vw&#xff1a;viewport width&#xff08;1vw 1/100视口宽度 &#xff09;vh&#xff1a;lviewport height ( 1vh 1/100视口高度 ) …

Linux如何将桌面版转为mini版-解决中文字体变为英文字体

中文字体转为英文字体 我们进入Rocky-Linux后&#xff0c;ls或者打开文件夹发现有中文 我们执行命令 sudo localedef -i en_US -f UTF-8 en_US.UTF-8将其转为英文&#xff0c;并且重启机器 此时中文转化为英文 桌面版linux转为MINN版 1. 我们可以卸载桌面版 sudo dnf gr…

前端发版上线出现白屏问题

目录 路由配置问题资源缓存问题首屏加载过慢 &#xff1a;喂&#xff0c;你的页面白啦&#xff01; 出现上线白屏的问题有很多&#xff0c;如&#xff1a;配置错误、缓存问题、浏览器兼容问题&#xff0c;根据不同情况去解决。 路由配置问题 问题描述&#xff1a; 在vue开发…

【CSDN活动】程序员职业生涯的分水岭:年龄还是经验?

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 程序员职业生涯的分水岭&#xff1a;年龄还是经验&#xff1f;引言技术更新换代…