我以前做过一些数字运算并在c程序中维护一个gui。我现在想在c中进行数字运算,但是将数据发送到python。然后,Python将根据发送的值创建和更新gui。
任何人都可以指向我的代码方向,将一个变量或数组从一个c程序发送到一个python程序 - 然后在python中打印它?
谢谢
答案 0 :(得分:-1)
考虑:
<强> fifo.c 强>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
int main (void)
{
// Array to send
int arr[] = {2,4,6,8};
int len = 4;
// Create FIFO
char filename[] = "fifo.tmp";
int s_fifo = mkfifo(filename, S_IRWXU);
if (s_fifo != 0)
{
printf("mkfifo() error: %d\n", s_fifo);
return -1;
}
FILE * wfd = fopen(filename, "w");
if (wfd < 0)
{
printf("open() error: %d\n", wfd);
return -1;
}
// Write to FIFO
for (int i=0; i<len; i++)
{
int s_write = fprintf(wfd, "%d ", arr[i]);
if (s_write < 0)
{
printf("fprintf() error: %d\n", s_write);
break;
}
}
// Close and delete FIFO
fclose(wfd);
unlink(filename);
}
<强> fifo.py 强>
filename = "fifo.tmp"
# Block until writer finishes...
with open(filename, 'r') as f:
data = f.read()
# Split data into an array
array = [int(x) for x in data.split()]
print array
您首先运行编写器(c),它将阻塞,直到阅读器(python)打开并读取数据。然后运行阅读器,两个进程都将终止。
$ python fifo.py [2, 4, 6, 8]
注意: