已解决
linux-守护进程daemon
来自网友在路上 169869提问 提问时间:2023-10-24 20:03:35阅读次数: 69
最佳答案 问答题库698位专家为你答疑解惑
linux-守护进程daemon
- 代码实现 main.c
- 运行结果
代码实现 main.c
//pName:程序名
//facility: 守护进程,输出日志类型 302页
#include<signal.h>
#include<syslog.h>
#include<fcntl.h>
static int daemon_proc = 0;
#define MAXDF 64
int test_daemon(const char* pName, int facility)
{int i;pid_t pid;if((pid = fork()) < 0){return -1;}else if(pid) //主进程退出{_exit(0);}//创建新会话if((setsid() < 0)){return;}//屏蔽终端挂断的消息signal(SIGHUP,SIG_IGN);//子进程再fork一次//防止子进程变成新会话的守进程,当没终端的会话打开终端时,终端最后会变成会话守进程的终端//为了确保守护进程将来打开终端时也不会获得终端if((pid = fork()) < 0){return -1;}else if(pid) {_exit(0);}//标识当前程序是否是守护进程daemon_proc = 1;//修改工作目录到根目录chdir("/"); //关闭文件描述符号for(int i=0; i<MAXDF; ++i){close(i);}//指定 stdin stdout strerror的日志输出目录//每个文件都属于自己的句柄,例如标准输入是0,标准输出是1,标准出错是2//打开0 1 2 防止 创建socket时被占用int p1 = open("/dev/NULL",O_RDONLY);int p2 = open("/dev/NULL",O_RDWR);int p3 = open("/dev/NULL",O_RDWR);//输出的日志内容在:/var/log/message 中openlog(pName,LOG_PID,facility); syslog(LOG_DEBUG, "daemon create\r\n");return 0;
}int main(int argc, char **argv)
{test_daemon("test_daemon",0);while(1){syslog(LOG_DEBUG, "daemon test\r\n");}return 0;
}
运行结果
查看全文
99%的人还看了
相似问题
- 当前系统并无桌面环境,或无显示器,无法显示远程桌面,您需要自行安装X11桌面环境,或者使用终端文件功能
- iTerm2+oh-my-zsh搭个Mac电脑上好用好看终端
- 终端仿真软件 SecureCRT v9.4.2
- vscode终端npm install报错
- 基于RK3588全高端智能终端机器人主板
- 智慧能源太阳能光伏数据采集终端钡铼技术4G无线RTU
- vue网页使用远程终端加终端多开
- 【启扬方案】启扬安卓屏一体机在医疗自助服务终端上的应用解决方案
- Cisco Packet Tracer路由器连接终端设备怎么配置?思科路由器连接终端设备怎么配置?
- 使用 Wireshark 抓包工具快速分析 IoT 物联网终端设备的网络通信行为
猜你感兴趣
版权申明
本文"linux-守护进程daemon":http://eshow365.cn/6-23569-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: 天锐绿盾加密软件——企业数据透明加密、防泄露系统
- 下一篇: 蓝桥杯 Java 青蛙过河