首页 > 代码库 > Linux Linux程序练习九
Linux Linux程序练习九
题目:自己动手实现一个守护进程,当控制台窗口关闭时还可以在后台运行。
每隔一秒钟向my.log文件中插入一条记录,记录格式如下:yyyy-mm-dd hh:mi:se 记录内容,其中yyyy为年,mm为月,dd为天,hh为小时,mi为分钟, se为秒。
#ifdef __cplusplusextern "C"{}#endif//写日志函数//path:日志文件名//msg:日志信息int writelog(const char *path, const char * msg);#ifdef __cplusplus}#endif
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include "mylog.h"int main(int arg,char * args[]){ pid_t pid=0; pid=fork(); if(pid>0) { exit(0); } if(pid==0) { setsid(); chdir("/"); umask(0); close(STDIN_FILENO); close(STDOUT_FILENO); close(STDERR_FILENO); int i=0; char buf[30]={0}; while(1) { sleep(1); sprintf(buf,"fly on air %d\n",i++); writelog("/home/test/1/testlog.txt",buf); memset(buf,0,sizeof(buf)); } } return 0;}
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include "mylog.h"int main(int arg,char * args[]){ pid_t pid=0; pid=fork(); if(pid>0) { exit(0); } if(pid==0) { setsid(); chdir("/"); umask(0); close(STDIN_FILENO); close(STDOUT_FILENO); close(STDERR_FILENO); int i=0; char buf[30]={0}; while(1) { sleep(1); sprintf(buf,"fly on air %d\n",i++); writelog("/home/test/1/testlog.txt",buf); memset(buf,0,sizeof(buf)); } } return 0;}
.SUFFIXES:.c .oCC=gccSRCS=hello.cOBJS=$(SRCS:.c=.o)EXEC=tecdstart:$(OBJS) $(CC) -L. -lmylog -o $(EXEC) $(OBJS) @echo "^_^-----OK------^_^".c.o: $(CC) -Wall -g -o $@ -c $<clean: rm -f $(OBJS) rm -f $(EXEC)
Linux Linux程序练习九
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。