簡體   English   中英

實現由C中的向上/向下箭頭鍵觸發的命令歷史記錄

[英]Implementing commands history triggered by arrow up/down keys in C

我實現了自己的shell,該shell執行所有現有的UNIX命令和幾個自定義命令。 我需要做的是,以與UNIX終端完全相同的方式使用向上/向下箭頭鍵訪問先前的命令。

我發現我可以使用<curses.h>庫的getch()方法。 即使我不知道如何使用該方法來期望鍵盤輸入無阻塞,但真正的問題是我需要編譯程序才能使用它,如下所示: gcc myShell.c -lcurses

我要做的可能是使用信號來監聽后台輸入,而不期望Enter 我還嘗試過fork()創建另一個進程,該進程將負責等待箭頭鍵的輸入,然后使用getch()方法來捕獲鍵,但是它也不起作用。

由於我已經使用過read()方法來讀取用戶插入的命令行。 此箭頭鍵輸入應完全獨立於現有輸入讀數。

Stackoverflow中的一些答案指出了<conio.h>庫,該庫在UNIX中不存在,因此很遺憾取決於平台。

簡而言之,我需要在自己的shell中讀取背景中的向上/向下箭頭鍵,並且我必須獨立於該平台進行操作,而不必鍵入gcc myShell.c其他gcc myShell.c進行編譯。 還應在不按Enter情況下將其捕獲。

如果關於我的問題的任何細節還不夠清楚,請讓我知道,以我能提供的更多細節進行解釋。

提前致謝!

這里的問題是您正在使用的終端,而不是您的程序。 例如,Windows命令提示符甚至會在將輸入發送到程序之前將其緩沖,因此沒有獨立於平台的方式來強制終端為您提供該數據。 我懷疑curses有一種依賴於平台的方式來關閉該緩沖,因此可以獲取角色。

有關更多詳細信息,請參見此問題的答案: 如何避免使用任何getchar()按下回車鍵

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM