ken 发表于 2011-12-22 18:48:43

关于守护进程的程序无法运行(新手)

本帖最后由 ken 于 2011-12-22 18:52 编辑

为什么我把守护进程和获取时间封装成函数就不能实现?


//实现功能:每隔10s 写 日期时分秒 到log文件中
//
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <time.h>
#include <unistd.h>
#define LOG_FILE "log.txt"
#define MODE"a+"

void Daemon()
{
int i;
const int MAXFD = 64;
if(fork() != 0)
{
    exit(0);
}
setsid();
chdir("/");
umask(0);
for(i = 0; i < MAXFD; i ++)
{
    close(i);
}
}

void GetTime()
{
FILE *fp = fopen(LOG_FILE, MODE);
if(NULL == fp)
{
    perror("fopen");
    return;
}
char *wday[] = {"Sum", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
time_t timep;
struct tm *p;
time(&timep);
p = localtime(&timep);
fprintf(fp,"%d-%d-%d", (1900 + p->tm_year), (1 + p->tm_mon), p->tm_mday);
fprintf(fp,"%s%d:%d:%d---\n", wday, p->tm_hour, p->tm_min, p->tm_sec);
fclose(fp);
}
int main()
{
Daemon();
while(1)
{
    GetTime();
    sleep(10);
}
return 0;
}

ken 发表于 2011-12-22 20:19:05

已明白原因了!

琦天娃娃 发表于 2011-12-22 22:36:21

本帖最后由 琦天娃娃 于 2011-12-22 22:40 编辑

好吧……除了加了个<sys/types>外,程序顺利跑通……



ken 发表于 2011-12-22 23:08:42

一开始我以为log.txt是在放程序的那个目录下,后来才知道在chdir的那个目录下

琦天娃娃 发表于 2011-12-23 00:23:02

ken 发表于 2011-12-22 23:08 static/image/common/back.gif
一开始我以为log.txt是在放程序的那个目录下,后来才知道在chdir的那个目录下

{:5_99:}

ken 发表于 2011-12-23 12:58:56

这里学嵌入式的好像比较少?请问 琦天娃娃 是学Linux嵌入式的吗? 以后能否多请教请教?

琦天娃娃 发表于 2011-12-23 21:28:12

不是……我只不过偶尔搞搞linux内核……

ken 发表于 2011-12-24 11:39:39

那说明对LINUX还是比较熟的,望以后能多多交流
页: [1]
查看完整版本: 关于守护进程的程序无法运行(新手)