zoukankan      html  css  js  c++  java
  • Linux Linux程序练习八

    题目:自己动手实现一个守护进程,当控制台窗口关闭时还可以在后台运行。
    每隔一秒钟向my.log文件中插入一条记录,记录格式如下:yyyy-mm-dd hh:mi:se 记录内容,其中yyyy为年,mm为月,dd为天,hh为小时,mi为分钟, se为秒。
    #ifdef __cplusplus
    
    extern "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
    ",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
    ",i++);
                writelog("/home/test/1/testlog.txt",buf);
                memset(buf,0,sizeof(buf));
            }
        }
        return 0;
    }
    .SUFFIXES:.c .o
    CC=gcc
    SRCS=hello.c
    OBJS=$(SRCS:.c=.o)
    EXEC=tecd
    
    start:$(OBJS)
        $(CC) -L. -lmylog -o $(EXEC) $(OBJS)
        @echo "^_^-----OK------^_^"
    .c.o:
        $(CC) -Wall -g -o $@ -c $<
    clean:
        rm -f $(OBJS)
        rm -f $(EXEC)

     

  • 相关阅读:
    【IOS】ObjectC 中的Selector 概念
    iOS开发笔记 3、iOS基础
    iOS开发笔记 2、Cocoa简明
    iOS开发笔记 4、iOS中的Cocoa、设计模式等
    iOS开发笔记 5、开发工具Xcode,Inteface Builder
    iOS开发笔记 8、真机调试和发布软件
    移动App如何收费的模式和步骤分析
    带滚动条的二级黑色竖直菜单(CSS实现)
    很是动感的一款js伸缩、关闭菜单
    JS实现类似腾讯QQ折叠菜单
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/5852765.html
Copyright © 2011-2022 走看看