方法一:使用传统的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。
分享到:
相关推荐
守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某 种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。 Linux的大多数服务器就是用守护进程实现的。守护进程的编程...
Linux守护进程设计规范及python实现首先,守护进程是一类在后台执行,生命周期较长的进程,它一般随系统启动运行,在系统关闭的时候停止。守护进程编码规范:首先要做的被称为 umask,这一步骤会将文件创建掩码重置...
这两天学习了linux 守护进程这个地方知识点挺多的,而且很重要,所以,...3,守护进程:Linux中的后台服务进程,daemon进程 4,守护进程的创建步骤: (1)创建子进程,父进程退出。 经过这步以后,子进程就
Unix/Linux中的守护进程(Daemon)类似于Windows中的后台服务进程,一直在后台长时间运行的进程。它通常在系统启动后就运行,没有控制终端,也无法和前台的用户交互,在系统关闭时才结束。Daemon程序一般都作为服务...
守护进程英文为daemon,像httpd,mysqld,最后一个字母d其实就是表示daemon的意思。 守护进程的编写步骤: 1、fork子进程,然后父进程退出,此时子进程会被init进程接管。 2、修改子进程的工作目录,创建新进程组合...
主要原理是利用linux的fork函数来创建一个进程,然后退出父进程运行,生成的子进程就会成为一个守护进程。细心观察的可能会发现,这个守护进程的运行身份是执行这个程序的用户,如果把这个守护程序加入到系统的服务...
当父进程发现请求数 >= 子进程数时,父进程创建新的子进程,并把子进程数加1(当然子进程数有个预先上限);当父进程发现子进程数大于请求数加1时,父进程杀死多余的子进程。 总的来说,思想是让子进程accept并处理...
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 ...
由国内著名技术社区联合推荐的2012年IT技术力作:《高性能Linux服务器构建实战:运维监控、性能调优与集群应用》,即将上架发行,此书从Web应用、数据备份与恢复、网络存储应用、运维监控与性能优化、集群高级应用等...
本书是将要学习嵌入式或者想要成为linux系统管理人员的基本入门书籍,非常不错 Linux应用与开发基础 目 录 第一章 了解LINUX操作系统.......................................................... 6 1.1 什么是LINUX...
start_kernel()本身所在的执行体,这其实是一个"手工"创建的线程,它在创建了init()线程以后就进入cpu_idle()循环了,它不会在进程(线程)列表中出现 init线程,由start_kernel()创建,当前处于用户态,加载了init...
因为Linux与Windows不同,其后台运行着许多进程,所以强制关机可能会导致进程的数据丢失,使系统处于不稳定的状态,甚至在有的系统中会损坏硬件设备(硬盘)。在系统关机前使用 shutdown命令,系统管理员会通知所有...
这是 Linux 系统的 Pinyto 守护进程。 该软件是一个 DBus 守护程序,它连接到 Pinyto-cloud(参见 )...守护进程在您的 HOME 中创建一个 .pinyto 目录并将其配置文件存储在那里。 第一次启动时,它会提示您输入 Pinyto
一个守护进程,该守护进程创建实时动态,可过期的iptables规则,以通过ssh或其他机制阻止/丢弃试图在linux主机上进行暴力破解攻击的IP地址。 高度可定制和可扩展的。
os模块中的fork方法可以创建一个子进程。相当于克隆了父进程 os.fork() 子进程运行时,os.fork方法会返回0; 而父进程运行时,os.fork方法会返回子进程的PID号。 所以可以使用PID来区分两个进程: #!/usr/bin/...
它必须与其运行前的环境隔离开来,这些环境包括未关闭的文件描述符、控制终端、会话和进程组、工作目录以及文件创建掩码等;它可以在系统启动时从启动脚本/etc/rc.d中启动,可以由inetd守护进程启动,也可以有作业...
Ipstate 性能检查工具 Irqbalance IRQ平衡守护进程 Libalo Linux自然不对称I/O存取库 Mlcrocode_ctl 更新x86/x86-64CPU代码的工具 Mkbootdisk 创建一个用于引导系统的引导软盘 Mlocate 按名称查找文件的一个实用工具...
以Alpine Linux作为基本映像的示例。 小容器,大约6.7 MB的大小。 图像将运行nginx的主进程作为root和工作进程作为nobody用户,而不是root 。 建立影像 要创建名称为minimal-nginx的图像: $ docker build -t ...
一个 Linux 和 *BSD 守护进程,它在互联网上的 UDP 隧道中提供多点以太网,用于实验目的和在线社区的创建,以及避免 IPmasq/NAT 防火墙的问题。
C SDK 在 64 位 Linux 操作系统上工作: gcc 4.8 或更高 glibc 2.17 或更高版本 内核版本2.6.26或更高版本 libpcre 8.20 或更高版本 线程 运行单元测试需要 cmake 2.8 或更高版本。 编译 New Relic 守护进程需要 ...