热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C语言守护进程

一、守护进程守护进程是后台运行的、系统启动是就存在的、不予任何终端关联的,用于处理一些系统级别任务的特殊进程。二、实现代码#include#in

一、守护进程


守护进程是后台运行的、系统启动是就存在的、不予任何终端关联的,用于处理一些系统级别任务的特殊进程。



二、实现代码

#include
#include
#include
#include
#include
#include
#include static int writeMessage(char *message) {FILE *file = fopen("/pwx/test", "r+");fprintf(file, "%s", message);fclose(file);
}static int daemonize() {pid_t pid;pid &#61; fork();if (pid < 0) {writeMessage(strerror(errno));return 1;}// 关闭父进程if (pid > 0) {writeMessage(strerror(errno));_exit(0);}setsid();pid &#61; fork();if (pid < 0) {writeMessage(strerror(errno));return 1;}// 关闭父进程if (pid > 0) {writeMessage(strerror(errno));_exit(0);}// 进入 &#39;/&#39; 目录if (chdir("/") < 0) {writeMessage(strerror(errno));return 1;}// 关闭标准输入、标准输出、错误输出if (close(STDIN_FILENO)|| close(STDOUT_FILENO)|| close(STDERR_FILENO)) {writeMessage(strerror(errno));return 1;}/* 忽略信号 */if (signal(SIGPIPE, SIG_IGN) &#61;&#61; SIG_ERR) {}if (signal(SIGCHLD, SIG_IGN) &#61;&#61; SIG_ERR) {}return 0;}int main() {// 创建一个守护进程daemonize();// 每秒钟记录一次时间FILE *file &#61; fopen("/pwx/time.log", "w&#43;");time_t t;while (1) {fseek(file, 0, SEEK_END);sleep(1);fprintf(file, "%s", asctime(&t));}}

三、相关函数


函数描述
void syslog(int priority, const chat *message, …);位于&#xff1a;;
功能&#xff1a;记录系统日志。
void openlog(const char *ident, int options, int facility);位于&#xff1a;;
功能&#xff1a;。
void closelog(void);位于&#xff1a;;
功能&#xff1a;关闭系统日志文件流;
返回&#xff1a;成功返回非空指针&#xff0c;出错返回-1。

推荐阅读
author-avatar
强压谷攻
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有