With fconfigure http://www.tcl.tk/man/tcl8.6/TclCmd/fconfigure.htm您可以获取和设置频道选项。-buffering
指定缓冲类型,默认为line
for stdin
.
有没有办法检查缓冲区是否位于stdin
是空还是不空?
请看这个问题:如何检查 TCL 中的 stdin 是否处于待处理状态? https://stackoverflow.com/questions/8755031/how-to-check-if-stdin-is-pending-in-tcl
显然,您可以将通道模式设置为非阻塞并从中读取。如果读取返回 0 长度,则没有任何内容可用。但是,我怀疑您的意思是测试存在的数据,但不是完整的行,因为您提到了行缓冲。 fblocked 命令为此测试通道。看受阻(1) http://www.tcl.tk/man/tcl8.4/TclCmd/fblocked.htm对于详细信息,但对于行缓冲通道,这可以让您知道存在不完整的行。
如果您正在阅读交互式脚本命令,则阅读 stdin 时另一个有用的命令是使用 infocomplete 命令。这样,您就可以累积行,直到 infocomplete 返回 true,然后对整个缓冲区进行评估。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)