haskell - 关于Cygwin中Haskell程序的stdout缓冲区的问题

我有一个简单的haskell程序,

  • 使用“\ n”提示用户一些消息
  • 等待用户输入
  • 打印用户输入

  • 如果我从命令提示符或从命令提示符启动的cygwin shell启动程序,则可以。

    但是,如果我从连接到本地cygwin环境的ssh shell启动程序,则该程序在退出之前不会将任何内容写回终端。看起来ssh shell中STDOUT的缓冲区不是行缓冲而是块缓冲。

    我不想手动冲洗。我该如何解决该问题?

    最佳答案

    大概您的Haskell程序不是Cygwin程序,即它没有与Cygwin DLL链接。 SSH连接在服务器端分配了一个所谓的伪终端(pty)设备,Cygwin使用Windows管道实现了该设备。非Cygwin程序只能看到管道,而他们可能希望与Windows控制台窗口进行通信。缓冲问题是其可能的后果之一。有关更多说明和可能的解决方法,请参见此线程:http://code.google.com/p/mintty/issues/detail?id=56。

    https://stackoverflow.com/questions/4689139/

    相关文章:

    angularjs - AngularJS 模板中的 Grails Assets 图像

    shell - 自动输入shell密码的方法?

    ssh - 如何为集群创建自动 "ssh"

    android - 无法将android中的POST请求发送到Grails后端

    php - 通过php我如何关闭由php ssh2_connect创建的事件ssh连接?

    git - 如何设置对 ssh git 服务器的只读访问权限?

    exception - 如何在事务中从 Grails 中的数据库错误中恢复

    grails - Grails错误:表或​​ View 不存在

    grails - 在Grails应用程序的主页中更改用户的语言环境

    security - SSH key 交换