您的问题来自缓冲区。FIFO默认使用块缓冲区。因此,在python中fifo的写缓冲区已满之前,c程序将不会读取任何内容。可以通过两种方式更改此行为:
- 指定缓冲模式:
有三种缓冲模式:
- 块缓冲区(默认)
- 行缓冲区
- 根本没有缓冲
这里满足您需求的是行缓冲区,因此请使用
fifo = open("emg", "w", 1);代替代替fifo = open("emg","w");。1号代替行缓冲区。python文档- 另一种方法是强制刷新缓冲区,
fifo.flush
在写操作之后使用。

您的问题来自缓冲区。FIFO默认使用块缓冲区。因此,在python中fifo的写缓冲区已满之前,c程序将不会读取任何内容。可以通过两种方式更改此行为:
有三种缓冲模式:
这里满足您需求的是行缓冲区,因此请使用
fifo = open("emg", "w", 1);代替代替fifo = open("emg","w");。1号代替行缓冲区。python文档fifo.flush在写操作之后使用。