所以,我正在製作一個Unix minishell,並且遇到了障礙。我需要能夠執行內置函數,所以我提出的函數:C映射字符串到函數
int exec_if_built_in(char **args)
它需要一個字符串數組(第一個是命令,和其餘爲參數)。對於非內置命令,我只需使用像execvp這樣的東西,但是我需要找到一種將第一個字符串映射到函數的方法。我正在考慮製作兩個數組,一個字符串,另一個使用相應的函數指針。但是,由於這些功能中的許多功能會有所不同(返回並接受不同的事物),所以這種方法將不起作用。我也想過使用一個名稱屬性和一個函數指針屬性來創建一個結構數組,但是再一次由於我將使用的函數的性質不同,這是行不通的。
那麼,基於字符串輸入來執行函數的最佳方法是什麼?如何將字符串映射到某個函數?我不太熟悉函數指針,所以我可能會錯過一些東西。
謝謝你們的幫助:)
該ptr-ptr上的任何邊界?即有沒有一個argc符合那個?我認爲你可能遲早會需要一個,特別是如果命令有參數並且你想驗證它們。 – WhozCraig
我對你所問的有點困惑。有1024個字符的限制可以傳遞到shell。我分解了用戶輸入到字符串數組中的字符串。我可以很好地構建函數,我只需要找到一種方法來調用與其字符串關聯的函數。 – robins35