Linux守护进程简介、创建流程、关闭和实例演示

2024-06-20 21:28

本文主要是介绍Linux守护进程简介、创建流程、关闭和实例演示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、什么是守护进程?

守护进程是一个后台运行的进程,是随着系统的启动而启动,随着系统的终止而终止,类似于windows上的各种服务,比如ubuntu上的ssh服务,网络管理服务等都是守护进程。

2、守护进程的创建流程

        1.创建孤儿进程(使进程能够脱离终端)(孤儿进程:子进程没结束,父进程先没了 此时该子进程就是孤儿进程。 (PS:僵尸进程:子进程死掉了 父进程还存在 但没有给它回收 ,此时死掉的子进程就变成了僵尸进程 僵尸态))

        2.设置孤儿进程的会话和组id    pid_t  setpid(void);

        3.切换目录   int chdir(const char *path)

        4.修改掩码值   mode_t umask(mode_t mask)

        5.创建日志文件

        6.文件描述符重定向  int dup(int oldfd)或int dup2(int oldfd,int newfd)(推荐)

参考以下dup和dup2函数-CSDN博客【代码】dup和dup2函数。https://blog.csdn.net/CSDN_DU666666/article/details/139823800?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22139823800%22%2C%22source%22%3A%22CSDN_DU666666%22%7D       7.开启自己的服务

3、实例演示

#include <head.h>int main(int argc, const char *argv[])
{pid_t pid;pid = fork();if (-1 == pid){perror("fork error");exit(-1);}else if (pid == 0){// 父进程执行exit(EXIT_SUCCESS);退出     1.子进程变成孤儿进程了// 2.设置孤儿进程的会话和组idif (setsid() == -1){perror("setsid error");exit(-1);}/*如果调用进程不是进程组领导,Setsid()将创建一个新会话。调用进程是新会话的领导者(即,它的会话Ip与其进程ID相同)。调用流程也成为新流程的流程组负责人。调用流程将是新流程组和新系统中唯一的流程*/// 3.切换目录  "var/log/"if (chdir("/var/log/") == -1){perror("chdir error");exit(-1);}// 4.设置掩码umask(0);// 5.创建日志文件int fd;if (-1 == (fd = open("daemon.log", O_RDWR | O_APPEND | O_CREAT, 0666))){perror("open error");exit(-1);}// 6.文件描述符重定向dup2(fd, 0);dup2(fd, 1);dup2(fd, 2);// 7.开启自己的服务while (1){printf("i am test daemon ...\n");fflush(stdout);sleep(3);}}else{// 父进程exit(EXIT_SUCCESS);// 让父进程退出,此时子进程成为孤儿进程// 孤儿进程:子进程没结束,父进程先没了 此时该子进程就是孤儿进程}return 0;
}

注:测试完成之后一定要将上述的守护进程杀死 

ps -ajx |grep ./daemon   查看进程号

kill -9 pid(进程号)

这篇关于Linux守护进程简介、创建流程、关闭和实例演示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1079296

相关文章

linux生产者,消费者问题

pthread_cond_wait() :用于阻塞当前线程,等待别的线程使用pthread_cond_signal()或pthread_cond_broadcast来唤醒它。 pthread_cond_wait() 必须与pthread_mutex 配套使用。pthread_cond_wait()函数一进入wait状态就会自动release mutex。当其他线程通过pthread

ESP32 esp-idf esp-adf环境安装及.a库创建与编译

简介 ESP32 功能丰富的 Wi-Fi & 蓝牙 MCU, 适用于多样的物联网应用。使用freertos操作系统。 ESP-IDF 官方物联网开发框架。 ESP-ADF 官方音频开发框架。 文档参照 https://espressif-docs.readthedocs-hosted.com/projects/esp-adf/zh-cn/latest/get-started/index

轻量级在线服装3D定制引擎Myway简介

我写的面向web元宇宙轻量级系列引擎中的另外一个,在线3D定制引擎Myway 3D。 用于在线商品定制,比如个性化服装的定制、日常用品(如杯子)、家装(被套)等物品的在线定制。 特性列表: 可更换衣服款式,按需定制更换模型可实时更改材质颜色可实时添加文本,并可实时修改大小、颜色和角度,支持自定义字体可实时添加艺术图标,并可实时修改大小、颜色和角度,支持翻转、各种对齐可更改衣服图案,按需求定制

Linux 安装、配置Tomcat 的HTTPS

Linux 安装 、配置Tomcat的HTTPS 安装Tomcat 这里选择的是 tomcat 10.X ,需要Java 11及更高版本 Binary Distributions ->Core->选择 tar.gz包 下载、上传到内网服务器 /opt 目录tar -xzf 解压将解压的根目录改名为 tomat-10 并移动到 /opt 下, 形成个人习惯的路径 /opt/tomcat-10

RedHat运维-Linux文本操作基础-AWK进阶

你不用整理,跟着敲一遍,有个印象,然后把它保存到本地,以后要用再去看,如果有了新东西,你自个再添加。这是我参考牛客上的shell编程专项题,只不过换成了问答的方式而已。不用背,就算是我自己亲自敲,我现在好多也记不住。 1. 输出nowcoder.txt文件第5行的内容 2. 输出nowcoder.txt文件第6行的内容 3. 输出nowcoder.txt文件第7行的内容 4. 输出nowcode

【Linux进阶】UNIX体系结构分解——操作系统,内核,shell

1.什么是操作系统? 从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境。我们通常将这种软件称为内核(kerel),因为它相对较小,而且位于环境的核心。  从广义上说,操作系统包括了内核和一些其他软件,这些软件使得计算机能够发挥作用,并使计算机具有自己的特生。这里所说的其他软件包括系统实用程序(system utility)、应用程序、shell以及公用函数库等

如何开启和关闭3GB模式

https://jingyan.baidu.com/article/4d58d5414dfc2f9dd4e9c082.html

swiper实例

大家好,我是燐子,今天给大家带来swiper实例   微信小程序中的 swiper 组件是一种用于创建滑动视图的容器组件,常用于实现图片轮播、广告展示等效果。它通过一系列的子组件 swiper-item 来定义滑动视图的每一个页面。 基本用法   以下是一个简单的 swiper 示例代码:   WXML(页面结构) <swiper autoplay="true" interval="3

Java面试题:通过实例说明内连接、左外连接和右外连接的区别

在 SQL 中,连接(JOIN)用于在多个表之间组合行。最常用的连接类型是内连接(INNER JOIN)、左外连接(LEFT OUTER JOIN)和右外连接(RIGHT OUTER JOIN)。它们的主要区别在于它们如何处理表之间的匹配和不匹配行。下面是每种连接的详细说明和示例。 表示例 假设有两个表:Customers 和 Orders。 Customers CustomerIDCus

问题-windows-VPN不正确关闭导致网页打不开

为什么会发生这类事情呢? 主要原因是关机之前vpn没有关掉导致的。 至于为什么没关掉vpn会导致网页打不开,我猜测是因为vpn建立的链接没被更改。 正确关掉vpn的时候,会把ip链接断掉,如果你不正确关掉,ip链接没有断掉,此时你vpn又是没启动的,没有域名解析,所以就打不开网站。 你可以在打不开网页的时候,把vpn打开,你会发现网络又可以登录了。 方法一 注意:方法一虽然方便,但是可能会有