2009-12-11 64 views
4

我想獲得在Windows XP中工作的emacs sql-mysql模式。我能夠進入sql-mysql模式併成功連接到mysql數據庫。問題是,緩衝區不顯示「mysql>」提示符。換句話說,它不與mysql.exe交互。如何強制mysql.exe以「交互」模式運行?

我想這是因爲該程序的mysql.exe正進入「非交互」模式時,它開始在幕後用emacs的。

儘管如此mysql options的似乎是任何幫助。

有關如何解決此問題的任何想法?我可以看到這是emacs comint模式與windows中其他命令行實用程序交互的問題,所以也許有os級解決方案?

回答

3

問題是emacs的內置終端使用管道與客戶端進程交談。 Mysql.exe是本機Windows程序,因此isatty()實際上會檢查相關文件描述符/句柄是否爲控制檯。這在管道上失敗了,因此mysql進入批處理模式。我看不到強制交互模式的方法。恥辱,因爲它大概是微不足道的實施。

在xterm或基於Cygwin的pty具有其他終端運行,它會顯示同樣的問題,因爲Cygwin的PTY仿真基於Windows管道。

+0

嗯,不是我希望的答案,但感謝您的解釋。 – Upgradingdave 2009-12-17 10:32:57

1

實際上沒有辦法,如果你不從(僞)終端運行它。它通過isatty檢查文件描述符0 1,如果它們中至少有一個不是終端,它將設置批處理模式。另一方面,你可以強制批處理模式。

反正這使得相當有道理的,因爲這是用於提示的readline需要一個終端到合理工作。所以解決這個問題的正確方法是在僞終端中運行它。

+0

感謝您的信息,米哈爾。我從cygwin啓動emacs。任何想法如何告訴emacs在僞終端中運行mysql?或者,也許我可以欺騙isatty總是返回1? (我對cygwin不是很熟悉,你可能會說) – Upgradingdave 2009-12-15 00:37:08

+0

在xterm或類似的東西里運行它。我真的不知道Cygwin多。 – 2009-12-15 07:42:28

相關問題