所以,我正在制作一个Unix minishell,并且遇到了障碍。我需要能够执行内置函数,所以我提出的函数:C映射字符串到函数
int exec_if_built_in(char **args)
它需要一个字符串数组(第一个是命令,和其余为参数)。对于非内置命令,我只需使用像execvp这样的东西,但是我需要找到一种将第一个字符串映射到函数的方法。我正在考虑制作两个数组,一个字符串,另一个使用相应的函数指针。但是,由于这些功能中的许多功能会有所不同(返回并接受不同的事物),所以这种方法将不起作用。我也想过使用一个名称属性和一个函数指针属性来创建一个结构数组,但是再一次由于我将使用的函数的性质不同,这是行不通的。
那么,基于字符串输入来执行函数的最佳方法是什么?如何将字符串映射到某个函数?我不太熟悉函数指针,所以我可能会错过一些东西。
谢谢你们的帮助:)
该ptr-ptr上的任何边界?即有没有一个argc符合那个?我认为你可能迟早会需要一个,特别是如果命令有参数并且你想验证它们。 – WhozCraig
我对你所问的有点困惑。有1024个字符的限制可以传递到shell。我分解了用户输入到字符串数组中的字符串。我可以很好地构建函数,我只需要找到一种方法来调用与其字符串关联的函数。 – robins35