18

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

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

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

谢谢。

4

3 回答 3

10

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

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

于 2011-07-17T01:37:40.487 回答
1

如果您想使用 telnet 与您的守护进程通信,请使用 tcp 套接字。

于 2011-07-17T00:39:55.500 回答
0

也可以使用远程过程调用 (RPC)进行这种客户端-服务器通信。有不同类型的消息(协议)可以与它一起使用,其中之一是 JSON。

JSON-RPC协议非常适合此类任务。您可以找到不同的工具和库来嵌入到您的软件中。谷歌上的快速搜索给出了这个 C 库。此类库的优势在于,您可以从定义所有远程函数调用的 JSON 规范文件中创建客户端和/或服务器存根,您可以在开箱即用的代码中使用这些存根。

作为侦听器,可以使用套接字,作为其他响应状态,或者只是一个嵌入式 HTTP 服务器,如microhttpd(和客户端的libcurl)。有很多例子可以重复使用。HTTP 还允许您在代理后面运行您的客户端。

于 2019-01-30T11:43:04.843 回答