您的位置:首页 > 运维架构 > Linux

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息