簡體   English   中英

與守護進程的進程間通信

[英]Interprocess communication with a Daemon

我想實現一個 Unix 守護進程(我們稱之為myUnixd ),並希望用戶能夠通過命令行與這個守護進程進行交互,例如:

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

所以我的問題是:我如何與守護進程通信? 我在考慮 Unix 域 sockets。 有人能告訴我這樣做的正確方法嗎?

謝謝。

使用伯克利 sockets 具體來說,您可以創建一個“UNIX 域套接字”(也稱為“本地域套接字”,它將創建一個看起來像文本文件的內容。寫入文本文件以將文本發送到守護程序,從中讀取以接收文本您可以通過幾個 function 調用來實現這一點。

如果你想要更高級的東西,你也可以使用DBus ,它提供了更復雜的界面,但學習起來更復雜。

如果您想使用 telnet 與您的守護程序通信,請使用 tcp 套接字。

也可以使用遠程過程調用 (RPC)進行這種客戶端-服務器通信。 有不同類型的消息(協議)可以與它一起使用,其中之一是 JSON。

JSON-RPC協議非常適合此類任務。 您可以找到不同的工具和庫來嵌入到您的軟件中。 谷歌上的快速搜索給出了這個 C 庫 此類庫的優點是,從 JSON 規范文件中定義所有遠程 function 調用,它創建客戶端和/或服務器存根,您可以在開箱即用的代碼中使用。

作為偵聽器,可以使用 sockets,作為其他響應 state,或者只是一個嵌入式 HTTP 服務器,如microhttpd (以及客戶端的libcurl )。 有很多例子可以重復使用。 HTTP 還允許您在代理后面運行您的客戶端。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM