在 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代码了。
我正在使用命名管道 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代码了。