daemon守护进程

Unix/Linux中的守护进程(Daemon)类似于Windows中的后台服务进程,一直在后台长时间运行的进程。它通常在系统启动后就运行,没有控制终端,也无法和前台的用户交互,在系统关闭时才结束。Daemon程序一般都作为服务程序使用

man手册对daemon函数的描述

daemon()函数用于希望脱离控制终端并在后台运行的程序

#include <unistd.h>

int daemon(int nochdir, int noclose);

如果nochdir=0,则将进程的当前工作目录更改为根目录(“/”);nochdir=1,则当前工作目录不变

如果noclose=0,则将标准输入、输出、出错重定向到/dev/null;否则,不会对这些文件描述符进行任何的更改

返回值:daemon函数内部会执行 fork, 如果 fork 成功, 父进程会调用 _exit 退出. 执行成功返回 0;发生错误时候将返回 -1,;errno 的设置依赖 fork(), setsid(), daemon() 源码.

测试代码

#include <stdio.h>
#include <errno.h>
#include <syslog.h>
#include <unistd.h>
#include <libgen.h>
#include <string.h>

int main(int argc, char **argv)
{

        if(daemon(1,1) < 0)//可以自己改改参数试一试
        {
                printf("Program daemon() failure: %s\n", strerror(errno));
                return -1;
        }

        printf("test start!!!!!!!!!!!!!\n");
        while(1)
        {
                printf("program is running!!!!!!!!!!!!!!!!\n");
                sleep(5);
        }

        return 0;
}

ctrl+c不能关掉该进程,可以查看进程号,将其杀死

ps aux | grep ./daemon
kill <进程号>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值