Chinaunix首页 | 论坛 | 博客
  • 博客访问: 279549
  • 博文数量: 109
  • 博客积分: 2116
  • 博客等级: 大尉
  • 技术积分: 1062
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-22 15:38
文章分类

全部博文(109)

文章存档

2013年(2)

2011年(16)

2010年(90)

2009年(1)

我的朋友

分类: LINUX

2010-07-09 11:26:17

今天完成一个守护进程实验。

1 熟悉守护进程编写和调试(系统日志)

2 编写多进程程序的方法

本实验首先创建一个守护进程,然后在其中新建一个子进程,暂停10秒,自动退出,守护进程收集子进程退出的消息。源代码来自华清远见

#include

#include

#include

#include

#include

#include

 

int main(void)

{

    pid_t child1, child2;

    int i;

 

    child1 = fork();//创建子进程1

    if(child1 == 1)

    {

        perror("child1 fork.\n");

        exit(1);

    }

    else if(child1 > 0)

    {

        exit(0);//父进程退出

    }

 

    openlog("daemon_proc_info", LOG_PID, LOG_DAEMON);//打开日志服务

 

    setsid();//子进程中创建新会话

    chdir("/");//改变当前目录为根目录

    umask(0);//重设文件权限码

    for(i = 0; i < getdtablesize(); i ++)

    {

        close(i);//关闭文件描述符

    }

 

    child2 = fork();//创建子进程2

    if(child2 == 1)

    {

        perror("child2 fork.\n");

        exit(1);

    }

    else if(child2 == 0)//子进程2中

    {

        syslog(LOG_INFO, "child2 will sleep for 10s.\n");//向日志中写入字符串

        sleep(10);

        syslog(LOG_INFO, "child2 is going to exit!\n");

        exit(0);

    }

    else//父进程(子进程1)

    {

        waitpid(child2, NULL, 0);//阻塞等待

        syslog(LOG_INFO, "child1 noticed that child2 has exited.\n");

        closelog();//关闭日志服务

        while(1)

        {

            sleep(10);

        }

    }

}

编译运行,结果如下:

1 守护进程在后台运行,所以ps -ef|grep daemon_proc查看是否运行。

2 调试信息自动由日志系统保存到/var/log/messages文件中。

显示如下:

阅读(747) | 评论(0) | 转发(0) |
0

上一篇:僵死的避免

下一篇:命名管道

给主人留下些什么吧!~~