【问题标题】:Standard In and Out for the process run using tcl shell使用 tcl shell 运行的进程的标准输入和输出
【发布时间】:2020-02-07 00:57:40
【问题描述】:

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

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

【问题讨论】:

  • 很好地解释了你正在尝试做的事情,但请添加更多细节,最好是一些代码,以便其他人可以检查你所做的事情,并可能指出你没有得到的东西根据您的逻辑预期的行为。
  • 请。显示一个最小但有效的 Java sn-p,说明您如何准确调用托管 tclsh 的系统进程。

标签: java eclipse-plugin tcl


【解决方案1】:

这方面最有可能的问题与不将输出刷新到其他进程有关,这可能是两个方面的问题。在 Java 端,您必须在写完一条完整的消息(通常是一整行)之后调用 writer 上的 flush() 方法。在 Tcl 端,你写一行后使用flush stdout,或者你配置标准输出通道在每行写完后自动刷新:

fconfigure stdout -buffering line

使用二进制协议,您应该完全禁用缓冲(none 而不是 line),并确保在每次写入之前完全组装消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多