2010-08-09 121 views
2

我使用通常無人值守的應用程序。現在我需要添加一些類似於交互式提示的東西。在交互模式下,操作員將能夠嚮應用程序提供簡單的命令 - 沒有任何花哨的簡單命令,如開始停止。參數化命令(例如重複10)和命令歷史記錄可能也不錯。C++中的簡單交互式提示

你是否偶然知道任何可以幫助完成這些任務的圖書館。我一直在想像boost::program_optionsgflags的作品,但是用於交互式提示而不是命令行參數。有任何想法嗎?

謝謝

回答

4

的Readline是一個最有名的圖書館這個

http://tiswww.case.edu/php/chet/readline/rltop.html

它是由GPL授權,所以它是唯一可能在GPL兼容的程序來使用。

我做替代品快速搜索,並發現這一點:

http://github.com/antirez/linenoise

+0

謝謝,但我希望有一些東西可以讓我真正定義命令,以便庫處理所有的解析。 – FireAphis 2010-08-09 14:13:52

+1

@Lou Franco:+1讓我發現linenoise,一顆小寶石! :-) – 2012-09-11 14:17:10

0

一種可能性是打開一個TCP端口並接受文本格式的消息。然後你可以telnet到那個端口併發出簡單的命令。

+0

-1:真的沒有與此有關。 – rubenvb 2010-08-09 14:58:32

+0

我看到我誤解了這個問題。我沒有仔細閱讀,並認爲他想添加一個交互式提示符到已經運行的應用程序。如果更多人認爲我的答案完全不相關,我會刪除它。 – 2010-08-09 15:56:13

+0

事實上,這並不是我想到的,但我喜歡這個把戲。如果我理解正確,這種方式我不需要GNU Readline - telnet客戶端將提供大部分readline功能,我只需要解析結果字符串。我對麼? – FireAphis 2010-08-10 10:46:12

1

我不知道,如果下面是工作的你要怎樣做一個合理的量,但是Python有一個叫做cmd2的非常好的命令行界面(CLI)構建庫。如果可以使用SWIGCTypes將應用程序的相關部分暴露給Python,那麼完成其他應該很容易。

下面是關於CMD2一個很好的視頻演示:

PyCon 2010:Easy command-line applications with cmd and cmd2

HTH

+0

在我的情況下,這是一個過度殺手,但很高興知道這個選項。也許我會這樣做,只是因爲它是一個有趣的實驗:) – FireAphis 2010-08-11 05:36:10

+0

對不起,這對你沒有多大用處,但是,是的,這是一個有趣的實驗,可以變得非常容易上癮:)與您的搜索祝你好運。 – Mhmmd 2010-08-11 16:51:38