微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C守护进程 – 有没有一种方法可以实现?

我在C中有一个关于守护进程的普遍问题,我现在还没有看到答案。

有没有办法像一个约定或标准一样实施守护进程的控制?

– 重新进一步解释 –

我已经看到了多个文件,讲授如何在C中创build守护进程的基础知识。分叉,closures文件描述符,更改根目录等等…没有问题。 当进程进入一个无限循环时(当守护进程被创build – 可以这么说),它们全部停止。 但是这只是编码守护进程的一半; 你必须以某种方式控制它。 我可以用不同的方式工作,但我觉得还有更多的东西。

PHP启动一个守护进程

Linux系统守护进程在Qt中

一种在Linux内部进行应用程序通信的方法

守护进程不停止在Linux中

ubuntu:启动(upstart)mongodb的第二个实例

为此(检查是否有进程正在运行,或者是否停止运行的守护进程,或者…)我已经看到了不同的方法(UNIX套接字,文件锁,pid文件…)以及它们的优点和缺点。 但在我看来,似乎是意见或个人口味。 “你为什么不只是…?” 或者“我已经这样做了,它为我工作”。 而且我不确定这是不是自由的标志。

我的意思是,如果你看看sshd,httpd,syslogd等等,它们都可以通过init-scripts或服务命令(start | stop | status)来控制。 这看起来像一个标准。 但是这只是一些松散的习惯,很多人试图追随,或者在C函数的深海中有某种“框架”? 你是否必须以某种方式使它工作 – 例如让你的程序响应“停止”参数,并以某种方式结束守护进程? 还是有某种标准,惯例,UNIX方式,最佳实践…应该遵循写出“好,干净的代码”,并在大多数环境中很好地集成?

我的主要问题归结为:是否有一种方法是要完成的?

如果是这样,我可以在哪里find更多信息? 我想还有更多需要照顾的,而不仅仅是开始和停止。

如何设置一个PHP守护进程?

将数据写入stderr会使程序在成为守护程序后退出

Linux守护进程vs前台应用程序

修改python守护进程脚本,stop不会返回OK(但会杀死进程)

父进程重启时如何让subprocess死掉

没有标准,但是有一个事实上的标准,正如你已经注意到的那样。

我建议你选择其中的一个例子,比如Apache,然后研究一下apachectl的功能。 你会发现它发送信号到守护进程,基于知道它从文件读取的PID。

在Apache的情况下,信号是有意义的,因为你不希望某种HTTP请求能够停止服务器。 在DBMS的情况下,您可能需要响应传入的命令来停止服务器,只要您先进行身份验证和授权。

您可以使用信号,或者守护进程可以创建一个unix套接字(具有适当的权限)并监听数据。这取决于您需要在程序中执行多少控制。

请记住,对于低流量的事情,可以方便地使用xinetd,让它叉和处理连接,只是响应请求。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐