在這個問題上我問的readline功能的一個特定位:什麼是Windows組件實現類似於readline的功能?
Readline庫包含額外的功能,以保持以前輸入的命令行的列表,回憶也許重新編輯這些行
現在在Windows上使用Visual Studio,您不需要沒有臭味readline
。您可以使用fgets,方向鍵將愉快地回想起您以前輸入的內容。當然你也可以編輯它們。
在linux上,非常相同的代碼(循環中的fgets
)不能像這樣工作。向上箭頭顯示爲^[[A
,左側和右側箭頭也不允許您按實驗所示導航該行,並且還描述了here。
我的問題是,Windows的哪些部分使編輯成爲可能?
我認爲它可以是conhost.exe或如何實現fgets
等。不知何故,我懷疑它是前者。無論如何,我想知道它究竟如何工作如果它被記錄在任何地方,等等。例如,除箭頭之外還有什麼其他鍵具有特殊含義並且處理方式不同,而不是作爲緩衝區的參數返回fgets
寫信給。
我*認爲*這是由控制檯設備邏輯處理的,只有當控制檯設備處於[熟悉模式]時纔會發生(https://msdn.microsoft.com/en-us/library/windows/desktop/ ms683462(v = vs.85)的.aspx)。實現細節可能會發生變化,但是,我猜這實際上是在當前版本的Windows的'conhost.exe'內部發生的。我很確定它不是C運行時庫的一部分,即與fgets無關。 –