Linux下的守护进程,以及自由设置的日志文件
2014-05-13 15:57
211 查看
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<syslog.h>
#include<time.h>
void setdaemon()
{
pid_t pid,sid;
pid = fork();
if(pid < 0)
{
printf("fork failed\n");
exit(EXIT_FAILURE);
}
if(pid > 0)
{
exit(EXIT_SUCCESS);
}
if((sid = setsid()) < 0)
{
printf("setsid failed\n");
exit(EXIT_FAILURE);
}
/*
if(chdir("/") < 0)
{
printf("chdir failed\n");
exit(EXIT_FAILURE);
}
umask(0);
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
*/
}
void writelog(const char *log)
{
time_t tDate;
struct tm *eventTime;
time(&tDate);
eventTime = localtime(&tDate);
int iYear = eventTime->tm_year + 1900;
int iMon = eventTime->tm_mon +1;
int iDay = eventTime->tm_mday;
int iHour = eventTime->tm_hour;
int iMin = eventTime->tm_min;
int iSec = eventTime->tm_sec;
char sDate[16];
sprintf(sDate, "%04d-%02d-%02d", iYear, iMon, iDay);
char sTime[16];
sprintf(sTime,"%02d:%02d:%02d", iHour, iMin, iSec);
char s[1024];
sprintf(s,"%s %s %s\n", sDate, sTime, log);
FILE *fd = fopen("my.log", "a+");
fputs(s, fd);
fclose(fd);
}
int main()
{
setdaemon();
writelog("my daemon is start.");
sleep(1);
writelog("my daemon is end.");
return EXIT_SUCCESS;
}
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<syslog.h>
#include<time.h>
void setdaemon()
{
pid_t pid,sid;
pid = fork();
if(pid < 0)
{
printf("fork failed\n");
exit(EXIT_FAILURE);
}
if(pid > 0)
{
exit(EXIT_SUCCESS);
}
if((sid = setsid()) < 0)
{
printf("setsid failed\n");
exit(EXIT_FAILURE);
}
/*
if(chdir("/") < 0)
{
printf("chdir failed\n");
exit(EXIT_FAILURE);
}
umask(0);
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
*/
}
void writelog(const char *log)
{
time_t tDate;
struct tm *eventTime;
time(&tDate);
eventTime = localtime(&tDate);
int iYear = eventTime->tm_year + 1900;
int iMon = eventTime->tm_mon +1;
int iDay = eventTime->tm_mday;
int iHour = eventTime->tm_hour;
int iMin = eventTime->tm_min;
int iSec = eventTime->tm_sec;
char sDate[16];
sprintf(sDate, "%04d-%02d-%02d", iYear, iMon, iDay);
char sTime[16];
sprintf(sTime,"%02d:%02d:%02d", iHour, iMin, iSec);
char s[1024];
sprintf(s,"%s %s %s\n", sDate, sTime, log);
FILE *fd = fopen("my.log", "a+");
fputs(s, fd);
fclose(fd);
}
int main()
{
setdaemon();
writelog("my daemon is start.");
sleep(1);
writelog("my daemon is end.");
return EXIT_SUCCESS;
}
相关文章推荐
- CentOS Linux系统下apache日志文件设置(每天单独生成一个日志文件)
- Linux使用日志系统调试守护进程
- LINUX文件夹以及文件权限设置
- Linux下Tomcat的启动、关闭、杀死进程以及查看日志
- Linux下Tomcat的启动、关闭、杀死进程以及查看日志
- 5款最优秀的Linux自由日志文件查看器
- GNU Linux syslog守护进程简介及syslog日志写入例子
- LInux 设置 单个进程打开最大的文件数
- 守护进程(setsid、getpgrp、setpgid、getpgid)以及系统日志(openlog、syslog、closelog)
- Linux系统下Apache日志文件设置、更改默认网站目录、防止php木马跨站设置、禁止空主机头
- 设置守护进程的文件权限创建掩码
- Linux 系统设置 ulimit 以及 Core文件的生成
- Linux下Tomcat的启动、关闭、杀死进程以及查看日志
- sqlserver数据以及日志文件的设置小结
- Linux下Tomcat的启动、关闭、杀死进程以及查看日志
- Linux下Tomcat的启动、关闭、杀死进程以及查看日志
- linux 练习六 守护进程_文件锁_系统时间
- linux 进程(关于守护进程、检查一个进程是否活着、如何写一个进程号文件)
- Linux进程托管与守护进程设置
- Linux 设置“进程最大可打开的文件数”永久有效的方式