2009-09-30 75 views
0

我正在實現我自己的shell。但是爲了支持命令歷史記錄,我需要像在標準shell中一樣使用監視器向上/向下箭頭鍵。請告訴我如何處理方向鍵作爲輸入或這些鍵是否產生信號?請詳細說明。使用向上/向下箭頭作爲Unix中程序的輸入

回答

2

箭頭和其他特殊鍵發送給您的是依賴於終端上使用或模擬特殊字符串。要最簡單地處理這個問題,可以使用庫如termcap。更簡單,給你明確的目的(命令歷史記錄支持),是使用readline,基本上會爲你(以及讓用戶自定義的跨越鏈接到同一個庫中的許多應用工作的他們的首選模式方面)。

+0

有沒有什麼我們可以做,而不使用這些庫意味着如果在我的程序中,我可以測試這些鍵作爲輸入嗎? – avd 2009-09-30 16:07:14

+0

你可以重新發明輪子,但是你想在你的外殼的一個小方面花費那麼多時間嗎? readline正是你想要的,但如果這對你來說是一個問題,那麼它就是GPL而不是LGPL。 – Duck 2009-09-30 16:11:49

+0

我正在做一個課程任務的一部分,我不允許使用其他外部librraies,爲什麼我需要。 – avd 2009-09-30 16:17:45

-1

是否分配具體說了,你需要有一個「驅動的光標鍵」命令歷史記錄?

簡單的選擇是模仿貝殼FC例如

$ ls 
... file listing ... 
$ fc -l 
1 ls 
2 fc -l 
$ fc -r 1 
... file listing ... 

和(當我提出成立的想法,我自己的,還不如去一路),以便能夠編輯命令行,你可以使用

fc -e start end 

寫歷史從開始到結束進入文件,啓動編輯器,然後將結果文件作爲腳本執行。這樣你的shell就不用庫了,而是啓動命令並執行腳本,這是shell本來應該做的。

+0

你還沒有很好地理解這個問題。 – 2009-10-03 09:17:40

+0

這就是爲什麼它開始了「這項任務是否明確地說」:)這不是第一次有人給出一個assingment,他們讓他們自己的假設,然後基於假設問一個問題,即使一個更簡單的解決方案會考慮到使用readline(顯而易見的解決方案)被「你不允許使用外部庫」排除在外 – 2009-10-03 13:11:38

1

這取決於你如何預期粗糙去。更糟糕的是,你正在編寫鍵盤中斷處理程序。最好的情況,就像readline。

請與您的教授在這裏方向。還要檢查你的課程材料,看看教授是否給出了有關這方面的鏈接/例子。

相關問題