我正在尝试将数据从一个C程序发送到一个Python程序(两个程序同时运行)。我尝试使用C语言中的popen函数。据我所理解,我在C程序中写入文件描述符的任何内容都可以从Python程序的stdin中读取。然而,Python程序似乎停在了从stdin读取的地方。有什么建议吗?
以下是C程序:
test.c
该程序似乎在value = sys.stdin.read()处卡住了。我已经尝试使用readline()和readlines(),但结果相同。
以下是C程序:
test.c
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main(void) {
FILE * fp = popen("sudo python display.py", "w");
if (fp == NULL) {
printf("popen error\n");
exit(1);
}
int inc = 0;
char buf[10];
while(1) {
sprintf(buf, "%d", inc);
fputs(buf, fp);
inc++;
sleep(1);
}
return (0);
}
这里是一个Python程序,它应该读取"inc"的值并输出它。
display.py
import sys
value = 0
while(True):
value = sys.stdin.read()
print value
该程序似乎在value = sys.stdin.read()处卡住了。我已经尝试使用readline()和readlines(),但结果相同。
fflush
,每秒只写入几个字节,OP需要等待很长时间才能发生一些事情。我猜Python进程实际上从未得到一个单独的字节(因为OP可能需要等待几百秒才能在原始代码上发生这种情况)。 - Basile Starynkevitch