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

时间:2011-07-17 00:35:20

标签: 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)

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

感谢。

3 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

一个人也可以使用Remote Procedure Call (RPC)进行这样的客户端-服务器通信。可以将不同类型的消息(协议)一起使用,其中之一是JSON。

JSON-RPC协议已非常适合此类任务。您可以找到要嵌入到软件中的其他工具和库。在Google上快速搜索得到this C library。这样的库的优点是,从JSON规范文件(您在其中定义了所有远程函数调用),它将创建客户端和/或服务器stubs,您可以直接在代码中使用它。

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

相关问题