我有一个用 C 语言创建的媒体播放器,它与我用 Python 编写的服务器一起运行。服务器接受命令来修改驻留在 SQLite 数据库中的播放列表。
一旦 python 代码更新了数据库(这发生在媒体播放器播放时的后台),它需要让播放器知道数据库中有一个新的播放列表,以便它可以开始播放新文件。
我打算在数据库中设置一个标志,玩家可以不断地轮询这个标志,但我认为这不是最好的方法。我能想到的所有选项都涉及媒体播放器不断检查某些内容。
解决这个问题的最佳方法是什么?
我有一个用 C 语言创建的媒体播放器,它与我用 Python 编写的服务器一起运行。服务器接受命令来修改驻留在 SQLite 数据库中的播放列表。
一旦 python 代码更新了数据库(这发生在媒体播放器播放时的后台),它需要让播放器知道数据库中有一个新的播放列表,以便它可以开始播放新文件。
我打算在数据库中设置一个标志,玩家可以不断地轮询这个标志,但我认为这不是最好的方法。我能想到的所有选项都涉及媒体播放器不断检查某些内容。
解决这个问题的最佳方法是什么?
有很多方法可以做到这一点:
mkfifo
Linux 机器上有。以这种方式创建的文件类似于套接字。我会推荐UDP套接字。它比信号简单、快速且更优雅。Python 代码大概只有 3 行代码。
示例 Python 代码:
sock = socket.socket()
sock.connect(('localhost', 9999))
sock.sendall('update')
sock.close()
示例 C UDP 服务器: http ://www.cs.ucsb.edu/~almeroth/classes/W01.176B/hw2/examples/udp-server.c