gpt4 book ai didi

python - 即时获取另一个程序的输出作为输入

转载 作者:IT王子 更新时间:2023-10-29 00:02:33 27 4
gpt4 key购买 nike

我有两个以这种方式使用的程序:

$ c_program | python_program.py

c_program 使用 printf() 打印内容,python_program.py 使用 sys.stdin.readline() 读取内容

我想让 python_program.py 在打印时立即处理 c_program 的输出,以便它可以打印自己的当前输出。不幸的是,python_program.py 仅在 c_program 结束后才获取其输入。

我该如何解决这个问题?

最佳答案

只需将标准输出设置为在您的 C 程序开始时进行行缓冲(在执行任何输出之前),如下所示:

#include <stdio.h>
setvbuf(stdout, NULL, _IOLBF, 0);

#include <stdio.h>
setlinebuf(stdout);

两者都可以在 Linux 上运行,但是 setvbuf 是 C 标准的一部分,因此它可以在更多系统上运行。

默认情况下,stdout 将针对管道或文件进行 block 缓冲,或针对终端进行行缓冲。由于 stdout 在这种情况下是一个管道,默认情况下将被 block 缓冲。如果它是 block 缓冲的,那么当缓冲区已满或调用 fflush(stdout) 时,缓冲区将被刷新。如果它是行缓冲的,那么它将在每行之后自动刷新。

关于python - 即时获取另一个程序的输出作为输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1408678/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com