将变量从python实时传递给C的最佳方法

use*_*955 0 c python variables media-player

我有一个我用C创建的媒体播放器,它与我在Python中运行的服务器一起运行.服务器接受命令以修改驻留在SQLite数据库中的播放列表.

一旦python代码更新数据库(这在媒体播放器正在播放时在后台发生),它需要让播放器知道数据库中有新的播放列表,以便它可以开始播放新文件.

我打算在数据库中设置一个标志,玩家可以不断轮询这个标志,但我不认为这是最好的方法.我能想到的所有选项都涉及媒体播放器不断检查某些内容.

最好的解决方法是什么?

Tom*_*cki 5

有很多方法可以做到这一点:

  1. 信号 - 从Python向玩家发送SIGUSR1信号.
  2. 套接字 - 播放器侦听某个端口,Python在该端口上发送一些数据(在这种情况下UDP将是最简单的).
  3. Fifo - mkfifoLinux机器上有.以这种方式创建的文件与套接字类似.

我推荐UDP套接字.它比信号更容易,更快速,更优雅.Python代码将是3行代码.

示例Python代码:

sock = socket.socket()
sock.connect(('localhost', 9999))
sock.sendall('update')
sock.close()
Run Code Online (Sandbox Code Playgroud)

示例C UDP服务器:http: //www.cs.ucsb.edu/~almeroth/classes/W01.176B/hw2/examples/udp-server.c