在 C 和 Python 之间共享变量

Sharing Variable between C and Python

我正在使用命名管道 FIFO 在 C(生成数字的循环是 C)和 python(监听 C 生成的数字并读取它们并处理它们)之间进行通信。 除了 C 中每个生成的数字外,代码运行良好,我需要关闭 fifo 才能在 Python 中看到它,否则它不会显示在 python 中,直到调用关闭命令。我不知道打开和关闭 FIFO 是否是一个好主意,以便能够在 python 代码中正确读取它们。我需要注意 C 代码每 50 毫秒生成一次数字。这就是为什么我怀疑打开和关闭是不是一个好主意。 这是我在 C 和 Python:

中的代码

C 作为服务器:

while (1){
            t=time_in_ms();
            if (t-t0>=50){
                    t0=t;
                    flag=1;
            }
            else{
                    flag=0;
            }
            if (flag==1){
                    flag=0;
                    printf("%lld %lld\n",count,t);
                    count+=1;
                    fprintf(f,"%lld\r",t);
                    fflush(f);
                    fclose(f);
                    f=fopen("fifo","w");

            }
    }

并在 Python 中作为客户端代码:

with open(FIFO) as fifo:
print("FIFO opened")
while True:
    data = fifo.read()
    if len(data) == 0:
            count=count+1
    else:
            count=0
    if count>2000:
        print("Writer closed")
        break
    print data
    x=x+1

这是一个小的工作示例

Python 边:

with open('./test_out.fifo', 'r') as fo:
    message = fo.readline()
    print(message)

在"server" C端

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main()
{
    int fifo_fd;
    fifo_fd = open("./test_out.fifo", O_WRONLY);
    dprintf(fifo_fd, "testing123\n");

    while(1)
    {
        sleep(1);
    }
    return 0;
}

C程序最后的死循环只是为了演示我们不需要在python程序中读取数据之前关闭文件

我也应该说我有一段时间没有做C代码了。