栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在C或Python中使用popen绕过子进程输出的缓冲

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在C或Python中使用popen绕过子进程输出的缓冲

通常,标准C运行时库(或多或少代表每个系统上的每个程序运行;-)检测stdout是否为终端;如果没有,它将缓冲输出(与未缓冲的输出相比,这将是巨大的效率优势)。

如果您在控制正在编写的程序,则可以(建议另一个答案)连续刷新stdout,或者(如果可行的话,更优雅些)尝试强制stdout不被缓冲,例如通过使用带有

-u
命令行标志的Python运行:

-u     : unbuffered binary stdout and stderr (also PYTHonUNBUFFERED=x)         see man page for details on internal buffering relating to '-u'

(手册页添加的内容是提及stdin和二进制模式的问题)。

如果您不能或不想触摸正在编写的程序,

-u
或者正在读取的程序上的类似内容不太可能有所帮助(最重要的缓冲是发生在编写者标准程序上的缓冲,而不是发生在编写程序标准上的缓冲)。读者的标准输入)。另一种方法是欺骗作者,使其相信它是通过
pty
标准库模块或更高级别的第三方pexpect模块(或者,对于Windows而言,是其端口)正在写入终端(即使实际上它正在写入另一个程序!)。wexpect)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/651825.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号