【发布时间】: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