代码之家  ›  专栏  ›  技术社区  ›  Upgradingdave

如何强制mysql.exe在“交互”模式下运行?

  •  4
  • Upgradingdave  · 技术社区  · 15 年前

    我想让EmacsSQL MySQL模式在WindowsXP中工作。我可以进入SQL MySQL模式并成功连接到MySQL数据库。问题是 SQL buffer不显示“mysql>”提示。换句话说,它不与mysql.exe交互。

    我认为这是因为当emacs在后台启动mysql.exe程序时,它将进入“非交互”模式。

    没有一个 mysql options 似乎有什么帮助。

    有什么解决办法吗?我可以看到,这对于Emacs Comint模式来说也是一个问题,它与Windows中的其他命令行实用程序交互,所以可能有一个操作系统级的解决方案?

    2 回复  |  直到 15 年前
        1
  •  3
  •   ak.    15 年前

    问题在于,Emacs的内置终端使用管道与客户机进程通信。mysql.exe是本机Windows程序,因此isatty()实际上检查所讨论的文件描述符/句柄是否是控制台。在管道上失败,因此MySQL进入批处理模式。我也看不到强制交互模式的方法。遗憾的是,这可能是微不足道的实现。

    在xterm或其他基于cygwin pty s的终端上运行它将显示相同的问题,因为cygwin的pty仿真是基于Windows管道的。

        2
  •  1
  •   Michal Čihař    15 年前

    如果您不从(伪)终端运行它,实际上是没有办法的。它检查文件描述符0 1 isatty 如果其中至少一个不是终端,则设置批处理模式。另一方面,您可以强制批处理模式。

    无论如何,这很有意义,因为用于提示的readline需要一个终端来合理地工作。所以解决这个问题的正确方法是在一个伪终端中运行它。