【问题标题】:An elegant API for a C-based remote-control / daemon (IPC / RPC)?用于基于 C 的远程控制/守护程序(IPC/RPC)的优雅 API?
【发布时间】:2010-11-03 05:58:26
【问题描述】:

我有一个守护进程(必须用 C 编写),它应该有一个遥控器,就像普通媒体播放器一样:

mediaplayer-rc --enqueue /path/to/song.mp3

如果mediaplayer-daemon 没有运行,它由遥控器启动。遥控器将传递消息。

我采用了对我来说最直观的方法:

  • 客户端应用程序尝试 connect() 并启动守护程序(如果不能)
  • 客户端使用argp将参数解析为结构体
  • 客户端通过套接字发送结构
  • 服务器接收结构并解释它

我有一个simple demo implementation using libev and unix sockets on github

我的理由是,用 C 编写客户端似乎更容易,我可以使用它们的 system() 版本从其他语言调用,而不是尝试将另一种语言正确地添加到 pack 结构或获取 C 库解析其他格式。

但我不认为这是一个特别优雅的解决方案。

另一种可能性是使用 JSON。缺点是在 vanilla C 中使用 JSON 解析器可能比 args 解析器复杂得多。结果是 JSON(或 YAML)在几乎所有其他语言的标准库中。

有什么建议吗?有人知道 songbird、gimp、itunes 和其他带有遥控器的应用程序是如何处理这个问题的吗?

【问题讨论】:

    标签: c ipc daemon rpc remote-control


    【解决方案1】:

    我不能推荐一个现成的库 - 相反,我建议您查看 Music Player Daemon。它使用一个非常简单的文本协议来远程控制整个应用程序。有几个clients(带代码)你也可以看看。

    【讨论】:

    • 这是一个很好的资源。我想看看其他一些实现,但我认为字符串是最可靠的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-11
    • 2018-05-03
    • 1970-01-01
    • 2015-12-21
    • 2022-06-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多