daemon函数实现原理

Linux Deamon函数 Daemon函数。 作用: 守护进程是生存期长的一种进程,因为他没有控制终端,他们是在后台运行的。调用daemon()函数将该进程设置为一个守护进程。 比如: 执行命令: ping 4.2.2 & 会释放终端,但是还是会在屏幕上面输出,需要使用,deamon,完全交由后台运行。 函数原型: int daemon(int nochdir ,int ... 阅读详情

linux提供了daemon函数用于创建守护进程,实现原理如下:

#include <unistd.h>

int daemon(int nochdir, int noclose);

1. daemon()函数主要用于希望脱离控制台,以守护进程形式在后台运行的程序。

2. 当nochdir为0时,daemon将更改进城的根目录为root(“/”)。

3. 当noclose为0是,daemon将进城的STDIN, STDOUT, STDERR都重定向到/dev/null。

 

daemon的实现大致如下:

int daemon( int nochdir,  int noclose )
{
   pid_t pid;
   if ( !nochdir && chdir("/") != 0 ) //如果nochdir=0,那么改变到"/"根目录
       return -1;
   
   if ( !noclose ) //如果没有noclose标志
   {
        int fd = open("/dev/null", O_RDWR);
        if ( fd  <  0 )
            return -1;

 

       /* 重定向标准输入、输出、错误到/dev/null,

键盘的输入将对进程无任何影响,进程的输出也不会输出到终端

*/

dup(fd, 0);

dup(fd, 1);

dup(fd, 2);     

close(fd);

}

   pid = fork();  //创建子进程.
   if (pid  <  0)  //失败
      return -1;
   if (pid > 0)
       _exit(0); //返回执行的是父进程,那么父进程退出,让子进程变成真正的孤儿进程.

//创建的 daemon子进程执行到这里了
   if ( setsid()  < 0 )   //创建新的会话,并使得子进程成为新会话的领头进程
      return -1;
   return 0;  //成功创建daemon子进程
}

 

使用实例:

int main()

{

    daemon(1, 1); //参数根据需求确定

    /*  在这里添加你需要在后台做的工作代码  */

}

如何杀死这样的进程:

通过ps+grep找到对应的后台进程,使用kill命令将进程杀死;也可创建shell脚本对进程的启动、关闭、重启进行自动管理

daemon deamon生命周期很长。在后台运行并且不拥有控制终端。deamon用来指向特殊任务,如:cron:一个在规定时间执行命令的daemon。sshd:安全shell deamon,允许在远程主机上使用一个安全的通信协议登录系统。httpd:HTTP服务器daemon,用于Web页面。inetd:Internet超级服务器daemon,监听从指定的TCP/IP端口上进入的网络连接并启动相应的服务器程序来处理这些连接。通常将daemon程序的名称以字母d结尾。 阅读详情

相关推荐

rk3588 rkaiq_3A_server 无法解析json文件记录

rk3588 rkaiq_3A_server 无法解析json文件记录

neardi_dev的博客 1万+

Linux下使用daemon函数编写后台程序

Linux中专门提供了一个函数来完成这个daemon化的过程,这个函数的原型如下   int daemon (int __nochdir, int __noclose);   如果__nochdir的值为0,则将切换工作目录为根目录;如果__noclose为0,则将标准输入,输出和标准错误都重定向到/dev /null。   经过这个函数调用后的程序将运行在后台,成为一个daemon程序,而linux下大多的服务都是以此方式运行的。   我们来看一个简单的例子。例如编写例子程序test.c #include <unistd> #include <stdio> int d

保险还在等灾后报案?高精度气象开始提前计算“赔付风险”

【摘要】传统保险理赔模式正在向灾前风险管理转型,保险公司竞争焦点从"赔得快"转向"预判准"。文章提出构建气象保险风险指数(WRI),通过"气象危险度×资产暴露度×标的脆弱性"精准计算损失风险,实现从天气预报向"损失天气"的转变。核心观点包括:1)需关注气象要素的强度、持续时间和空间位置三维度;2)可视化系统应直接显示预期赔付热力图;3)需解决指数保险的基差风险问题,采用多源数据融合技术;4)理想平台需包含风险地图、损失热力图、灾

专注AI大模型,软件混淆,授权 36

deamon(守护进程)的实现

文章来源:http://blog.csdn.net/xuleilx/article/details/8258798  感谢博主 Daemon   Daemon程序是一直运行的服务端程序,又称为守护进程。通常在系统后台运行,没有控制终端不与前台交互,Daemon程序一般作为系统服务使用。Daemon是长时间运行的进程,通常在系统启动后就运行,在系统关闭时才结束。一般说Daemon程序在后台运

Leezha的博客 7837

linux环境下使用daemon函数实现守护进程

daemon进程是后台守护进程,比如linux 下server都是daemon进程,像httpd、sshd等这些服务你肯定听说过,如果我们想写一个后台运行程序应该怎么做呢?其实非常容易,只要添加unistd.h头文件,然后在调用daemon函数即可...

AlbertS Home of Technology 2951

daemon函数实现原理 守护进程

daemon函数实现原理 守护进程 linux提供了daemon函数用于创建守护进程,实现原理如下: #include <unistd.h> int daemon(int nochdir, int noclose); 1.daemon()函数主要用于希望脱离控制台,以守护进程形式在后台运行的程序。 2.当nochdir为...

weixin_30725467的博客 84

daemon函数

其实,linux提供了daemon函数用于创建守护进程,实现原理与上文中介绍的是一样的。 #include intdaemon(int nochdir, int noclose); 1. daemon()函数主要用于希望脱离控制台,以守护进程形式在后台运行的程序。 2. 当nochdir为0时,daemon将更改进城的根目录为root(“/”)。 3. 当noclose为0是,daemo

xiaohuima_dong的专栏 488

LinuxDaemon实现

<br />参考http://zxuhong.blog.51cto.com/368977/99283/<br />注:Linux下可以直接调用damon函数实现daemon进程,没必要重新实现,理解其原理即可。<br />在Linux中专门提供了一个函数来完成这个daemon化的过程,这个函数的原型如下int daemon (int __nochdir,int __noclose);<br />如果__nochdir的值为0,则将切换工作目录为根目录;如果__noclose为0,则将标准输入,

capa2006的专栏 6548

daemon函数原理及使用详解

http://blog.chinaunix.net/uid-20196318-id-94985.html 在linux系统下创建守护进程的原理及步骤在文章(链接如下)中介绍过。http://blog168.chinaunix.net/space.php?uid=20196318&do=blog&id=28738   其实,linux提供了daemon函数用于创建守护进程,实现原理

lwpping的专栏 838

linux编程-守护进程编写

linux编程-守护进程编写 守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待 处理某些发生的事件。守护进程是一种很有用的进程。 Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。 同时,守护进程完成许多系统任务。比如,作业规划进程crond,打印进程

aaronjzhang_的专栏 1418

linux c++ 守护进程,Linux守护进程(Daemon)介绍与C++实现

1. 守护进程简介守护进程(deamon)是生存期长的一种进程。它们常常在系统引导装入时启动(如果需要守护进程随系统自启动,需要在/etc/init.d目录下放置响应的启动脚本,或者利用systemctl来控制,还有一些其他方法如supervisor等,读者可自行网上搜索相关用法),仅在系统关闭时才终止。因为它们没有控制终端,所以说它们是在后台运行的。从daemon的启动和管理方式区分,可以将da...

weixin_42510768的博客 1010

daemon函数理解及参数使用——daemon后进程退出的原因

最近在使用daemon函数的时候,遇到了一个不算问题的问题,一开始没有发现也是由于我对这个函数的参数没有深入了解过。下面来稍微深入了解一下这个函数linux提供了daemon函数⽤于创建守护进程,使进程脱离控制台,在后台运行。 函数原型: 头文件 #include <unistd.h> int daemon(int nochdir, int noclose); 当nochdir为0时,daemon将更改进程的根⽬录为root(“/”)。(我就是在这里犯的错误) 当noclose为0时,

ZHENYU的博客 2900

守护进程daemon(),C 库函数asctime、localtime,UDEV的配置文件,开机自启动,自动挂载U盘

一、守护进程一、守护进程守护进程(Daemon Process)是在计算机系统后台运行的一类进程,它们通常在系统启动时启动,不依赖于用户直接操作,一直运行在后台,不受用户登录或注销的影响。守护进程的存在主要是为了执行特定的系统任务或服务,例如服务器、网络服务、定时任务等。守护进程通常在后台运行,不与任何终端关联,不接受用户的直接输入。守护进程通常会调用fork函数创建一个子进程,并使得子进程成为新的会话组长,从而脱离与终端的关联。守护进程通常会关闭与终端相关的文件描述符,以防止被终端关闭影响进程运行。

咖喱年糕的博客 648

linux C】daemon函数应用之——进程守护小工具,运维仔看了都说好!并附带shell版本

最近接触到Linux C中的daemon函数,顾名思义,它和守护进程Daemon有关;简单来说Linux Daemon(守护进程)是运行在后台的一种特殊进程;一般来说,它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件,因为守护进程是在后台运行,不会占着终端,所以终端可以执行其他命令。Linux系统的大多数服务器就是通过守护进程实现的。常见的守护进程包括系统日志进程syslogd、 web服务器httpd、邮件服务器sendmail和数据库服务器mysqld等。

Rio小哥的博客 1407

Linux中创建Daemon进程的三种方法

Linux中创建Daemon进程的三种方法 什么是daemon进程? Unix/Linux中的daemon进程类似于Windows中的后台服务进程,一直在后台运行运行,例如http服务进程nginx,ssh服务进程sshd等。注意,其英文拼写为daemon而不是deamon。 为什么daemon进程需要特殊的编写步骤? daemon进程和...

weixin_30883777的博客 273

模型蒸馏实战:YOLOv11知识迁移至轻量级网络的工业级精度保障策略.pdf

该文档【模型蒸馏实战:YOLOv11知识迁移至轻量级网络的工业级精度保障策略】共计 23 页,文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。还在为目标检测的低效和高成本发愁吗?它凭借独特的单阶段检测算法,只需对图像进行一次扫描,就能迅速精准地识别出多个目标,速度远超传统方法。不仅如此,YOLO在精度上也毫不逊色,无论是小目标还是复杂场景下的目标,都能被它敏锐捕捉。在安防监控、自动驾驶、工业检测等众多领域,YOLO都已大显身手。选择YOLO,就是选择高效、精准的目标检测解决方案,开启智能新时代!

上一篇: 取当前进程对应之静态映像文件的绝对路径/proc/self/exe
下一篇: TCP_DEFER_ACCEPT
yanook
博客等级 码龄16年 54粉丝 30原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值