【发布时间】:2015-12-22 08:40:40
【问题描述】:
我正在尝试在 python 文件和 C 文件之间创建一个 FIFO 管道,但问题是当从 C 文件中读取输入时,getline 会阻塞,直到编写器结束(在 python 文件中)关闭。
C 文件:
char fifo_emg[] = "emg";
mkfifo(fifo_emg, S_IRWXU);
int fd_emg = open(fifo_emg, O_RDONLY);
FILE* fp = fdopen(fd_emg, "r");
char *line = NULL;
size_t len = 0;
ssize_t _read;
printf("Both ends open. Reading commands...\n");
while ((_read = getline(&line, &len, fp)) != -1) {
printf("Comamnd: %s", line);
}
Python 文件:
fifo = open("emg", "w");
while 1:
line = raw_input("ENTER COMMAND: ")
if line[0] == '!':
break
else:
fifo.write(line + '\n')
fifo.close()
当我同时运行两者时,我想要 C 文件的输出 “命令:foo” 一旦通过python输入输入。 但是,只有在调用 fifo.close() 时才会读入数据,并且只是一次读入所有数据。这并没有真正的帮助,因为我想要一个恒定的命令流。
【问题讨论】:
-
在
fifo.write(...)之后尝试fifo.flush() -
这正是我所需要的!非常感谢!