笔记整理—linux进程部分(5)syslog调试信息记录

news/2024/10/3 23:01:47/

        守护进程将fd0、1、2指向垃圾桶,无法正常查看其进程信息或调试信息。

void openlog(const char *ident, int option, int facility);openlog("a.out",LOG_PID|LOG_CONS,LOG_USER);

        option是个宏操作操作选项,其中常用的为LOG_CONS将信息打印到控制台上,LOG_PID信息包含PID。facility也是个宏指什么类型的程序,LOG_AUTH安全类信息、LOG_CRON时间相关,LOG_USER一般用户信息等等

void syslog(int priority, const char *format, ...);syslog(LOG_INFO,"this is my log info");

        首先就是priority就是重要优先级:

LOG_EMERG      system is unusable                高优先级(系统挂了)LOG_ALERT      action must be taken immediatelyLOG_CRIT       critical conditionsLOG_ERR        error conditionsLOG_WARNING    warning conditionsLOG_NOTICE     normal, but significant, conditionLOG_INFO       informational messageLOG_DEBUG      debug-level message                低优先级(调试信息)

        使用closelog()关闭调试信息。一般而言log调试信息在/var/log/messages中查看,ubuntu在/var/log/syslog中查看。操作系统中有一个守护进程syslogd在开机时启动,关机时关闭,负责进行日志文件的写入和维护。syslogd是独立的进程,可以用openlog()打开一个与syslogd相连的通道,通过syslog向syslogd发送信息,后由syslogd写入。任何进程都可以用syslogd写入日志文件,这是一种操作系统服务。

        如何让母后程序不多次运行。守护进程在后台运行,本质上不需要多次打开,文件只需单例运行,如果这个进程已经在运行,则本次运行退出或提示已经在运行。其常用的方法为,去判断一个特定的文件是否存在,第一次运行时就去创建这个文件,文件应该是十分特别的文件,在关闭时就删除这个文件。

fd=open(FILENAME,U_RDWR|O_TRUNC|O_CREAT|O_EXCL,0664);(截断+创建+判断该名字的文件分是否存在)
if(fd<0){if(erron==EEXTST){//EEXTST对应的就是O_EXCLprintf("err 文件已经存在/n");exit(-1);}
}void delete_file(void)
{remove(FILENAME);
}atexit(delete_file);

        当进程结束时会去自动运行atexit()函数,atexit()会在进程结束时去自动指向指向的注册函数,这个很析构。


http://www.ppmy.cn/news/1533423.html

相关文章

UE5: Content browser工具编写02

DebugHeader.h 中的全局变量&#xff0c;已经在一个cpp file中被include了&#xff0c;如果在另一个cpp file中再include它&#xff0c;就会有一些conflicts。先全部给加一个static Add static keyword to debug functionsWrap all the functions inside of a namespaceprint …

【设计模式-命令】

定义 命令模式&#xff08;Command Pattern&#xff09;是一种行为设计模式&#xff0c;它将请求封装为一个对象&#xff0c;从而使您能够使用不同的请求、排队请求或记录请求&#xff0c;并支持可撤销的操作。该模式通过将请求与其执行分离&#xff0c;使得请求者和接收者之间…

【MAUI】CommunityToolkit社区工具包介绍

一、为什么需要声明式开发 .NET的MVVM,始于WPF,很古典,它甚至可能是现代前端框架“声明式开发”的鼻祖。声明式开发,之所以出现,是因为命令式开发在UI层和代码层上无法解耦的问题。如下图所示: 1、命令式开发:后台代码需要调用UI层的控件(label.Text),如果更新UI层…

高精度(1)——高精度减法

题目描述 给定两个正整数&#xff08;不含前导 0&#xff09;&#xff0c;计算它们的差&#xff0c;计算结果可能为负数。 输入格式 共两行&#xff0c;每行包含一个整数。 输出格式 共一行&#xff0c;包含所求的差。 数据范围 1≤整数长度≤100000 输入样例 32 11 …

【2024】前端学习笔记11-网页布局-弹性布局flex

学习笔记 网页布局弹性布局&#xff1a;flex案例&#xff1a;flex布局案例 网页布局 在页面布局中&#xff0c;display属性用于设置一个元素的显示方式。它可以指定元素是作为块级元素、内联元素还是充当表格元素显示。 display的常见属性值&#xff1a; block&#xff1a;将…

解决$‘r‘ command not found或者文件夹显示’tvsf 33‘$‘r‘

问题现象: 某客户反馈在执行脚本的时候文件夹显示存在问题,如下图: 但是脚本文件中的内容并没有\r字符,如下图: 也有客户反馈如下: 问题分析: $\r’是回车符的转义表示。在Unix和Linux系统中,回车符是一个不可见的控制字符,它通常用于文本文件中的行结尾。以上…

Docker的实践应用举例

Docker作为一种流行的容器化技术&#xff0c;已经广泛应用于软件开发、部署、运维等多个领域。它通过将应用程序及其依赖项打包到可移植的容器中&#xff0c;极大地简化了应用的部署和管理过程。以下将详细探讨Docker的实践与应用&#xff0c;并通过多个具体例子来展示其强大的…

【d57】【sql】1661. 每台机器的进程平均运行时间

思路 一方面考察自连接&#xff0c;另一方面考察group by 这里主要说明 group by 用法&#xff1a; 1.在 SQL 查询中&#xff0c;GROUP BY 子句用于将结果集中的行分组&#xff0c;目的通常就是 对每个组应用聚合函数&#xff08;如 SUM(), AVG(), MAX(), MIN(), COUNT() 等…