[使用tcl shell运行的标准输入和输出

问题描述 投票:0回答:1

我正在为类似于GDB的调试器编写Eclipse插件。该调试器用C编写,并使用TCL库处理命令。调试器前端创建并添加使用TCL Shell处理的TCL扩展。我试图从我的Java代码运行调试器可执行文件,并读入和读入标准以与应用程序通信。但是我的java进程在两个管道上都没有得到任何东西。如果将可执行文件更改为gdb,我的逻辑就可以正常工作。

我以前从未使用过Tcl,并且不确定Tcl shell是否与进出阻塞过程有关?请提供您的输入或与此有关的任何可能的指针。

java eclipse-plugin tcl
1个回答
0
投票

此区域中最可能的问题与不将输出刷新到其他进程有关,这可能是两个问题。在Java方面,编写完完整的消息(通常是整行)后,必须在编写器上调用flush()方法。在Tcl端,您可以在写完一行后使用flush stdout,或将标准输出通道配置为在写完每一行后自动刷新:fconfigure stdout -buffering line

使用二进制协议,您将完全禁用缓冲(none而不是line),并且只确保在每次写入之前完全组装消息。
© www.soinside.com 2019 - 2024. All rights reserved.