与守护进程进行进程间通信

fun*_*der 13 c unix command-line daemon inter-process-communicat

我想实现一个Unix守护进程(让我们称之为myUnixd),并希望用户能够通过命令行与该守护进程交互,例如:

myUnixd --help # will display help information
myUnixd --show # will show some data (the's deamon should be doing the work)
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:我如何与守护进程通信?我在想Unix域套接字.有人能告诉我正确的方法吗?

谢谢.

Max*_* E. 9

使用伯克利插座.具体来说,您可以创建一个"UNIX域套接字"(也称为"本地域套接字",它将创建看起来像文本文件的内容.写入文本文件以将文本发送到守护程序,从中读取以接收文本来自守护进程.您可以通过一些函数调用来实现它.

如果你想要更高级的东西,你也可以使用DBus,它提供了更复杂的界面,但学习起来更复杂.

  • 根据Mysqld的手册页(http://linuxcommand.org/man_pages/mysqld1.html),默认行为是在/tmp/mysql.sock中创建Unix域套接字,但您可以使用--指定不同的路径套接字选项。至于httpd,你指的是哪个httpd?其中有几个。 (2认同)
  • 看起来 Apache 通过直接向进程发送信号 (http://en.wikipedia.org/wiki/Signal_%28computing%29) 来实现此目的,如果您只想要求进程做的唯一事情就是退出或挂断。如果你想发送更多不同类型的命令,信号就不够了。 (2认同)