Linux编程3.8 进程-守护进程

  • 守护进程(daemon)是生存期长的一种进程。它们常常在系统引导装入时启动,在系统关闭时终止。
  • 所有守护进程都以超级用户(用户ID为0)的优先权运行。
  • 守护进程没有控制终端。
  • 守护进程的父进程都是init进程

1、 守护进程编程步骤

  • 使用umask将文件模式创建屏蔽字设为0
  • 调用fork,然后让父进程退出(exit)
  • 调用setsia创建一个新会话
  • 将当前工作目录更改为要目录
  • 关闭不需要的文件描述符

2、 守护进程出错处理

  • 由于守护进程完全脱离了控制终端,因此,不能像其它程序一样通过输出错误信息到控制台的方式来通知程序员。
  • 通常办法是使用syslog服务,将出错信息输入到“/val/log/slog”系统日志文件中去。
  • syslog是linux中的系统日志管理服务通过守护进程syslog来维护。

3、 syslog服务说明

  • opnelog函数用于打开系统日志服务的一个连接
  • syslog函数用于向日志文件中写入消息,在这里可以规定消息的优先级、消息的输出格式等。
  • closelog函数用于关闭系统日志服务的连接

4、 相关操作函数

1)、openlog函数

#include <syslog.h>void openlog(const char *ident, int option, int facility);
功能:打开一个到系统日志记录程序的连接。

参数

  • ident:要向每个消息加入的字符串,通常为程序的名称。
  • option
    • LOG_CONS 若日志消息不能通过发送到syslog,则将该消息写到控制台。
    • LOG_NDELAY 立即打开linux域数据报套招口到syslog守护进程,通常,在记录第一条消息之前,该套接口不打开。
    • LOG_PERROR 除将日志消息发送给syslog外,还将它写至stderrr.
    • LOG_PID 每条消息都包含进程ID,此选择项可供对每个请求都fork一个子进程的守护进程使用。
  • facility 指定记录消息的类型
标识说明
LOG_AUTH安全/授权消息
LOG_AUTHPRIV安全/授权消息(专用)
LOG_CRON时钟守护进程(CRON和at)
LOG_DAEMON系统守护进程,没有单独的设施值
LOG_FTP守护程序
LOG_KERN内核消息(这些消息不能从用户进程中生成)
LOG_LOCAL0 through LOG_LOCAL7保留供本地使用
LOG_LPR行式打印机子系统
LOG_MAIL邮件子系统
LOG_NEWS使用NET新闻子系统
LOG_SYSLOG由syslogd(8)内部生成的LOG_SYSLOG消息
LOG_USER(默认)通用用户级消息
LOG_UUCPUUCP子系统

2)、syslog和closelog函数

#include <syslog.h>void syslog(int priority, const char *format, ...);
void closelog(void);

参数

PRIORITY:消息优先级
标识说明
LOG_EMERG紧急(系统不可使用,最高优先级)
LOG_ALERT必须立即修复的条件
LOG_CRIT临界条件(例如,硬设备出错)
LOG_ERR出错条件
LOG_WARNING警告条件
LOG_NOTICE正常,但重要的条件
LOG_INFO信息性消息
LOG_DEBUG调试排错消息(最低优先级)

5、示例代码

/*守护进程编程的5个步骤*/
//1、 创建屏蔽子为0
umask(0);
//2、 调用fork函数创建子进程,然后父进程退出
pid_t pid=fork();
if(pid>0) exit(0);
//3、 调用setsid函数创建一个新会话
setsid();
//4、 将当前工作目录更改为根目录
chdir("/");
//5、 关闭不需要的文件描述符
close(STDIN_FIENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);//打开日志
syslog(LOG_DEBUG,"write:%s \n",strerror(errno));

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

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

相关文章

二叉树|110.平衡二叉树

力扣题目链接 class Solution { public:// 返回以该节点为根节点的二叉树的高度&#xff0c;如果不是平衡二叉树了则返回-1int getHeight(TreeNode* node) {if (node NULL) {return 0;}int leftHeight getHeight(node->left);if (leftHeight -1) return -1;int rightHei…

鸿蒙一次开发,多端部署(六)自适应布局

针对常见的开发场景&#xff0c;方舟开发框架提炼了七种自适应布局能力&#xff0c;这些布局可以独立使用&#xff0c;也可多种布局叠加使用。 下面我们依次介绍这几种自适应布局能力。 拉伸能力 拉伸能力是指容器组件尺寸发生变化时&#xff0c;增加或减小的空间全部分配给容…

鸿蒙一次开发,多端部署(十一)设置应用页面

本小节以“设置”应用页面为例&#xff0c;介绍如何使用自适应布局能力和响应式布局能力适配不同尺寸窗口。 页面设计 为充分利用屏幕尺寸优势&#xff0c;应用常常有在小屏设备上单栏显示&#xff0c;大屏设备上左右分两栏显示的设计&#xff0c;设置应用页面设计如下。 观察…

不要取和所用方法名字相同的类

package 练习; import java.util.*; public class StringBuilder {public static void main(String[] args){Scanner scan new Scanner(System.in);String r scan.nextLine();StringBuilder x new StringBuilder(r);System.out.println(x);}} 奉上错误代码&#xff08;上面&…

qt5-入门-标签页部件QTabWidget-1

参考&#xff1a; C GUI Programming with Qt 4, Second Edition 本地环境&#xff1a; win10专业版&#xff0c;64位&#xff0c;Qt5.12 目录 效果实现Qt Designer操作代码addStretch()解释 效果 首页有三个按钮和最近文件列表。 拖动窗口&#xff0c;按钮和文件列表仍然处…

【C++】1600. 请假时间计算

问题&#xff1a;1600. 请假时间计算 类型&#xff1a;基本运算、整数运算 题目描述&#xff1a; 假设小明的妈妈向公司请了 n 天的假&#xff0c;那么请问小明的妈妈总共请了多少小时的假&#xff0c;多少分钟的假&#xff1f;&#xff08;提示&#xff1a; 1 天有 24 小时&…

关于UDS刷写的一些杂谈

最近在做CAPL编写UDS刷写上位机的工作&#xff0c;后续过来更新现在这里查个眼&#xff0c;以免后面忘记了。 下面放一些可能会用到的知识点&#xff1a; 1.一般的刷写流程如下所示&#xff1a; 红色标记代表为功能寻址。 预编程&#xff1a;10 01&#xff0c;10 83&#xf…

【Python 自定义函数】

函数能提高应用的模块性&#xff0c;和代码的重复利用率。Python提供了许多内建函数&#xff0c;比如print()。但我们可以根据需求创建函数&#xff0c;即用户自定义函数。 一、定义函数的规则 以def a关键词开头&#xff0c;后接函数标识符名称和圆括号()任何传入参数和自变…

Linux——du, df命令查看磁盘空间使用情况

一、实现原理&#xff1a; df 命令的全称是Disk Free &#xff0c;显而易见它是统计磁盘中空闲的空间&#xff0c;也即空闲的磁盘块数。它是通过文件系统磁盘块分配图进行计算出的。 du 命令的全称是 Disk Used &#xff0c;统计磁盘有已经使用的空间。它是直接统计各文件各目…

HarmonyOS4.0—自定义渐变导航栏开发教程

前言 今天要分享的是一个自定义渐变导航栏&#xff0c;本项目基于鸿蒙4.0。 先看效果&#xff1a; 这种导航栏在开发中也比较常见&#xff0c;特点是导航栏背景色从透明到不透明的渐变&#xff0c;以及导航栏标题和按钮颜色的变化。 系统的导航栏无法满足要求&#xff0c;我们…

Vuex 笔记

Vuex的设计初衷就是为了解决Vue中单项数据流的问题,什么是单项数据流,简单来说就是 父组件可以传值给子组件,你可以用props,还相对简单. 子组件可以传值给父组件,你可以用$emit,这个算相对难一丢丢. 1.Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候&#x…

8868体育助力西甲赫罗纳 争冠黑马惨遭掀翻

西甲的赫罗纳足球俱乐部是8868体育助力的球队之一&#xff0c;西甲排名第12的赫塔费队迎来了西甲第29轮的较量&#xff0c;赫塔费队此役坐镇自己的主场PK赛前排名第2的争冠超级黑马赫罗纳队。 赛前赫塔费队已经连续4轮联赛不胜&#xff08;2平2负状态低迷&#xff09;&#xff…

力扣 字符串解码

维护一个放数字的栈&#xff0c;一个放字母的栈 遇到[把数字和字母入栈&#xff0c;遇到]把当前字母循环加上数字栈头遍的字母栈头 class Solution { public:string decodeString(string s) {string ans"";stack<int>sz;stack<string>zm;里面是string …

一文讲清!进销存管理系统如何实现锁库及库存冻结?计算月加权平均成本?

进销存管理系统中的锁库及库存冻结如何实现&#xff1f;进销存管理系统如何计算月加权平均成本&#xff1f;进销存管理系统又该如何统计和预测采购需求&#xff1f;这些进销存管理难题困扰着许多企业管理者。本文将结合数年从业经验&#xff0c;深入探讨这些进销存管理难题&…

面试算法-83-不同路径 II

题目 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish”&#xff09;。 现在考虑网格中有障碍物。那么从左上角到…

saas架构使用实现

saas架构使用实现 saas是什么 多租户架构——是指在同一个系统中&#xff0c;为不同的客户提供不同的部署环境&#xff0c;各个客户之间的数据和操作是相互独立的。这种架构可以大幅降低系统的开发和运维成本&#xff0c;同时也能提高系统的可扩展性和灵活性。每个用户有自己特…

Keepalived 踩坑

场景&#xff1a;操作系统环境为centos7.9 这里举例了定时检测一个http接口&#xff0c;若超过4次返回不为200则切换master到backup 同时若当前节点被切换为备份节点需要执行一个自己的脚本 两台虚拟机 准备一个vip 1.安装keepalived yum install keepalived 2.配置文件路径…

苹果电脑不能删除移动硬盘文件 苹果电脑移动硬盘只读模式如何更改 移动硬盘文件或目录损坏且无法读取怎么办

当我们将移动硬盘插入苹果电脑后&#xff0c;发现无法对移动硬盘中的文件进行编辑该怎么办&#xff1f;相信有不少网友遇到过这类情况。苹果电脑不能删除移动硬盘文件&#xff0c;或无法拷贝硬盘里的文件。今天我为大家解决苹果电脑移动硬盘只读模式如何更改的问题&#xff0c;…

superset 二开增加 flink 数据源连接通过flink sql 查询数据

前言 superset 目前还不支持 flink 的数据源连接&#xff0c;目前我们公司在探索使用数据湖那一套东西&#xff1a; 使用 flink 作为计算引擎使用 paimon oss对象存储对接 flink 作为底层存储使用 superset 通过 flink gateway 查询 paimon 数据形成报表 增加flink数据源 …

Linux中关于库的概念

一、概念 库是一个二进制文件&#xff0c;包含的代码可被程序调用。例如标准C库、数学库、线程库... 库有源码&#xff0c;可下载后编译&#xff1b;也可以直接安装二进制包。 库是事先编译好的&#xff0c;可以复用的代码。 在OS上运行的程序基本上都要使用库&#xff0c;…