我试图理解如何使我的程序成为守护进程 . 所以我遇到的一些事情通常,程序执行以下步骤来成为守护进程:

致电 fork( ) .

在父级中,调用 exit( ) . 这可确保原始父级(守护程序's grandparent) is satisfied that its child terminated, that the daemon'的父级不再运行,并且守护程序不是进程组组长 . 最后一点是成功完成下一步的要求 .

调用 setsid( ) ,为守护程序提供一个新的进程组和会话,两者都将其作为领导者 . 这也确保了进程没有关联的控制终端(因为进程刚刚创建了一个新的会话,并且不会分配一个) .

通过 chdir( ) 将工作目录更改为根目录 . 这样做是因为继承的工作目录可以在文件系统的任何位置 . 守护进程倾向于在系统持续运行期间's uptime, and you don'想要保持一些随机目录打开,从而阻止管理员卸载包含该目录的文件系统 .

关闭所有文件描述符 .

打开文件描述符0,1和2(标准输入,标准输出和标准错误)并将它们重定向到 /dev/null .

#include

#include

#include

#include

#include

#include

#include

int main (void)

{

pid_t pid;

int i;

/* create new process */

pid = fork ( );

if (pid == -1)

return -1;

else if (pid != 0)

exit (EXIT_SUCCESS);

/* create new session and process group */

if (setsid ( ) == -1)

return -1;

/* set the working directory to the root directory */

if (chdir ("/") == -1)

return -1;

/* close all open files--NR_OPEN is overkill, but works */

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

close (i);

/* redirect fd's 0,1,2 to /dev/null */

open ("/dev/null", O_RDWR);

/* stdin */

dup (0);

/* stdout */

dup (0);

/* stderror */

/* do its daemon thing... */

return 0;

}

有人可以给我链接到某些程序的现有源代码,比如Apache,这样我就可以更深入地理解这个过程 .

java 进程 守护进程_如何制作进程守护进程相关推荐

  1. apply_async进程不执行_[粉丝问答6]子进程进程的父进程关系

    一.粉丝提问 fork出的进程的父进程是从哪来的? 粉丝提问,一口君必须满足 二.解答 这个问题看上去很简单,但是要想把进程的父进程相关的所有知识点搞清楚,还是有点难度的,下面我们稍微拓展下,分几点来 ...

  2. PHP进程退出信号_一文吃透 PHP 进程信号处理

    背景 前两周老大给安排了一个任务,写一个监听信号的包.因为我司的项目是运行在容器里边的,每次上线,需要重新打包镜像,然后启动.在重新打包之前,Dokcer会先给容器发送一个信号,然后等待一段超时时间( ...

  3. ubuntu虚拟机进程被杀死_服务器上程序显示进程被杀死

    作为一个javaer,我以前写过很多关于Linux的文章.但经过多年的观察,发现其实对于大部分人,有些东西压根就用不着.用的最多的,就是到线上排查个问题而已,这让人很是苦恼.那么,我们就将范围再缩小一 ...

  4. java viewer 控件_插件制作过程记录(使用TreeViewer贡献视图)

    使用TreeViewer贡献视图(根据<Eclipse入门到精通>中的例子进行的改编) 作者:李红霞 2005-8-13 本文章允许转载,但请要求注明文章作者及出处 一 创建插件项目 创建 ...

  5. Supervisor守护Java进程_使用Supervisor来守护我们的服务

    一.Supervisor简介 Supervisor是什么?Supervisor官网(http://supervisord.org/)上是这样描述的:Supervisor是一个进程控制系统,可以用来监视 ...

  6. java 守护进程 linux_Java使用appache deamon实现linux守护进程

    2014-02-11 06:30:02 阅读( 383 ) 守护进程,也就是通常说的Daemon进程,是Linux中的后台服务进程.它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务 ...

  7. 创建一个守护进程来监听服务进程的异常状态_用 C# 来守护 Python 进程

    (给DotNet加星标,提升.Net技能) 转自:hippieZhoucnblogs.com/hippieZhou/p/11504552.html 背景 主要负责的一个项目是一个 C/S 架构的客户端 ...

  8. 查看java进程占用内存_如何查看java进程大批占用内存

    如何查看java进程大量占用内存 你好,方法如下: 可以直接使用top命令后,查看%MEM的内容.可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令: ...

  9. java 进程 线程数量_如何查询一个进程下面的线程数(进程和线程区别)

    在平时工作中,经常会听到应用程序的进程和线程的概念,那么它们两个之间究竟有什么关系或不同呢? 一.对比进程和线程 1)两者概念 -  进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程 ...

  10. java 句柄数 设置_修改操作系统句柄数和用户进程数

    对于一般的应用来说(像Apache.系统进程)1024完全足够使用.但是像squid.mysql.java等单进程处理大量请求的应用来说就有点捉襟见肘了.如果单个进程打开的文件句柄数量超过了系统定义的 ...

最新文章

  1. POJ 1207 The 3n + 1 problem
  2. 如何在 Ubuntu Linux 16.04上安装开源的 Discourse 论坛
  3. 性别分析--微信数据分析(一)
  4. 基于mysqli封装的数据库类
  5. 使用print写文件
  6. java 反射api_个人编程学习网 - Java-操作反射其他的API
  7. java多线程Lock接口简介使用与synchronized对比 多线程下篇(三)
  8. 【Hadoop】Hadoop组件 -之 HDFS组件
  9. matlab dlt标定,实验三 Matlab图像处理基本操作及摄像机标定(DLT)
  10. 怎么生成一个永久性的二维码?微信群二维码如何长期有效?
  11. csapp--键盘驱动程序的分析与修改
  12. 服务器密码机的标准和产品应用要点
  13. java.util.zip.ZipException: only DEFLATED entries can have EXT descriptor
  14. 工厂模式及在Spring中的应用
  15. 如何获取微信公众号关注页链接
  16. SAP销售发票会计凭证汇率跟随客户汇率类型
  17. 设计模式—策略模式(Strategy Pattern)
  18. 阿里2019社招内推!阿里云高级专家(P8)帮内推!投递简历邮箱看正文!
  19. 【Hive】distinct on different columns not supported with skew in data
  20. 通过Fiddler进行抓包并分析

热门文章

  1. Windows API一日一练(37)MoveWindow函数
  2. 中学-知识与能力【3】
  3. 使用project2013编制项目计划:[1]基本步骤
  4. node将html转为pdf,将node.js中的html文件转换为pdf并将其写入磁盘
  5. SQL 21 天自学通学习笔记 2
  6. 释放pytorch占用的gpu显存_Pytorch 节省显存的训练方法总结
  7. 神卓ITG智能组网客户端安装方法 (一)
  8. jmeter jp@gc - Ultimate Thread Group-自定义线程
  9. UG NX 12 设置启动时自动打开模板
  10. 关于一次服务优化的总结和思考