`
emowuyi
  • 浏览: 1480970 次
文章分类
社区版块
存档分类
最新评论

[linux] 创建daemon进程

 
阅读更多


方法一:
使用传统的fork()函数。示例代码如下:

static void daemon_init ( const char *workdir, mode_t mask )
{
int i, j;

/*
* change working directory, this step is optional
*/
chdir( "/tmp" );
if ( 0 != Fork() )
{
/*
* parent terminates
*/
exit( EXIT_SUCCESS );
}
/*
* first child continues
*
* become session leader
*/
setsid();
Signal( SIGHUP, SIG_IGN );
if ( 0 != Fork() )
{
/*
* first child terminates
*/
exit( EXIT_SUCCESS );
}
/*
* second child continues
*
* change working directory, chdir( "/" )
*/
chdir( workdir );
/*
* clear our file mode creation mask, umask( 0 )
*/
umask( mask );
j = Open( "/dev/null", O_RDWR );
Dup2( j, 0 );
Dup2( j, 1 );
Dup2( j, 2 );
j = getdtablesize();
for ( i = 3; i < j; i++ )
{
close( i );
}
return;
} /* end of daemon_init */

方法二:
调用daemon()函数。示例代码如下:

daemon(1, 0);

有些系统不支持daemon函数。不过如果你的程序只在linux下运行,那就没问题。

补充:
如果你只是想在退出telnet或者putty的时候“进程不退出”,那么你需要的也许只是处理一下SIGHUP。
分享到:
评论

相关推荐

    开发Linux操作系统后台服务进程详解

    守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某 种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。 Linux的大多数服务器就是用守护进程实现的。守护进程的编程...

    daemon_python:Linux守护进程的python实现

    Linux守护进程设计规范及python实现首先,守护进程是一类在后台执行,生命周期较长的进程,它一般随系统启动运行,在系统关闭的时候停止。守护进程编码规范:首先要做的被称为 umask,这一步骤会将文件创建掩码重置...

    linux下如何创建守护进程的步骤

    这两天学习了linux 守护进程这个地方知识点挺多的,而且很重要,所以,...3,守护进程:Linux中的后台服务进程,daemon进程  4,守护进程的创建步骤:  (1)创建子进程,父进程退出。  经过这步以后,子进程就

    linux下的守护进程和系统日志

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

    python daemon守护进程实现

    守护进程英文为daemon,像httpd,mysqld,最后一个字母d其实就是表示daemon的意思。 守护进程的编写步骤: 1、fork子进程,然后父进程退出,此时子进程会被init进程接管。 2、修改子进程的工作目录,创建新进程组合...

    Python实现在Linux系统下更改当前进程运行用户

    主要原理是利用linux的fork函数来创建一个进程,然后退出父进程运行,生成的子进程就会成为一个守护进程。细心观察的可能会发现,这个守护进程的运行身份是执行这个程序的用户,如果把这个守护程序加入到系统的服务...

    一个进程池的服务器程序

    当父进程发现请求数 &gt;= 子进程数时,父进程创建新的子进程,并把子进程数加1(当然子进程数有个预先上限);当父进程发现子进程数大于请求数加1时,父进程杀死多余的子进程。 总的来说,思想是让子进程accept并处理...

    redhat linux教材20课程学习文档

    9.5.2 创建daemon 9.5.3 daemon用法 9.5.4 识别 第十章 文件系统 10.1 分区管理 10.1.1 分区概念 10.1.2 fdisk与parted命令 10.2 文件系统创建与维护 10.3 磁盘限额 10.4 文件和目录 10.4.1 访问控制 10.4.2 ...

    集群好书《高性能Linux服务器构建实战》 试读章节下载

    由国内著名技术社区联合推荐的2012年IT技术力作:《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》,即将上架发行,此书从Web应用、数据备份与恢复、网络存储应用、运维监控与性能优化、集群高级应用等...

    linux应用与开发基础

    本书是将要学习嵌入式或者想要成为linux系统管理人员的基本入门书籍,非常不错 Linux应用与开发基础 目 录 第一章 了解LINUX操作系统.......................................................... 6 1.1 什么是LINUX...

    ARM_Linux启动分析.pdf

    start_kernel()本身所在的执行体,这其实是一个"手工"创建的线程,它在创建了init()线程以后就进入cpu_idle()循环了,它不会在进程(线程)列表中出现 init线程,由start_kernel()创建,当前处于用户态,加载了init...

    入门学习Linux常用必会60个命令实例详解doc/txt

    因为Linux与Windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失,使系统处于不稳定的状态,甚至在有的系统中会损坏硬件设备(硬盘)。在系统关机前使用 shutdown命令,系统管理员会通知所有...

    daemon:这是 Pinyto 的 Linux DBus damon。 Pinyto 是个人云数据库和应用程序基础架构,用于收集、同步、分析和访问来自不同设备的数据

    这是 Linux 系统的 Pinyto 守护进程。 该软件是一个 DBus 守护程序,它连接到 Pinyto-cloud(参见 )...守护进程在您的 HOME 中创建一个 .pinyto 目录并将其配置文件存储在那里。 第一次启动时,它会提示您输入 Pinyto

    Daemon Shield-开源

    一个守护进程,该守护进程创建实时动态,可过期的iptables规则,以通过ssh或其他机制阻止/丢弃试图在linux主机上进行暴力破解攻击的IP地址。 高度可定制和可扩展的。

    python使用fork实现守护进程的方法

    os模块中的fork方法可以创建一个子进程。相当于克隆了父进程 os.fork() 子进程运行时,os.fork方法会返回0;  而父进程运行时,os.fork方法会返回子进程的PID号。 所以可以使用PID来区分两个进程: #!/usr/bin/...

    Python守护进程和脚本单例运行详解

    它必须与其运行前的环境隔离开来,这些环境包括未关闭的文件描述符、控制终端、会话和进程组、工作目录以及文件创建掩码等;它可以在系统启动时从启动脚本/etc/rc.d中启动,可以由inetd守护进程启动,也可以有作业...

    生产服务器部署规范.docx

    Ipstate 性能检查工具 Irqbalance IRQ平衡守护进程 Libalo Linux自然不对称I/O存取库 Mlcrocode_ctl 更新x86/x86-64CPU代码的工具 Mkbootdisk 创建一个用于引导系统的引导软盘 Mlocate 按名称查找文件的一个实用工具...

    docker-minimal-nginx:使用Alpine Linux的Nginx的最小docker映像

    以Alpine Linux作为基本映像的示例。 小容器,大约6.7 MB的大小。 图像将运行nginx的主进程作为root和工作进程作为nobody用户,而不是root 。 建立影像 要创建名称为minimal-nginx的图像: $ docker build -t ...

    Wide Area Network Daemon-开源

    一个 Linux 和 *BSD 守护进程,它在互联网上的 UDP 隧道中提供多点以太网,用于实验目的和在线社区的创建,以及避免 IPmasq/NAT 防火墙的问题。

    c-sdk:新的 Relic C SDK

    C SDK 在 64 位 Linux 操作系统上工作: gcc 4.8 或更高 glibc 2.17 或更高版本 内核版本2.6.26或更高版本 libpcre 8.20 或更高版本 线程 运行单元测试需要 cmake 2.8 或更高版本。 编译 New Relic 守护进程需要 ...

Global site tag (gtag.js) - Google Analytics