2010-11-03 71 views
1

我有一个守护进程(必须用C编写),它应该有像普通媒体播放器远程执行:用于基于C的远程控制/守护程序(IPC/RPC)的优雅API?

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

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

我把那似乎是最直观的,以我的方式:)

  • 客户端应用程序试图连接(如果它不能
  • 客户端使用argp解析PARAMS启动守护程序成一个结构
  • 客户端通过
  • 服务器接收结构和其解释
套接字发送结构

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

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

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

另一种可能性,将是使用JSON。令人沮丧的是,在香草C中使用JSON解析器可能比参数解析器更复杂。结果是JSON(或YAML)在几乎所有其他语言的标准库中。

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

回答

1

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

+0

这是一个很好的资源。我想看看其他一些实现,但我认为字符串是最可靠的方法。 – CoolAJ86 2010-11-05 05:11:08

相关问题