我有一个 C 源文件,其中包含一些函数。我想从 shell 脚本中调用一些特定的函数。我有一个sample.c
包含以下内容的文件。我想funcA
从 shell 脚本调用这里。我怎样才能做到这一点?
#include <stdio.h>
void funcA(void){
printf("Congrats..!! This is function A...!!\n");
}
int main(void){
printf("Better luck next time..!!\n");
return 0;
}
答案1
如果您愿意通过在函数末尾添加对exit
函数的调用(例如)来稍微更改代码,则可以通过将选项传递给链接器来编译代码,以在这种情况下成为它们的入口点。exit(0);
-e funcA
funcA
假设文件被调用foo.c
,您可以使用以下 shell 脚本,该脚本在从 shell 脚本调用时执行funcA
文件中的函数。foo.c
call foo.c funcA
call() {
cc -Wl,-e"$2" $1 && ./a.out
}
答案2
无法直接从 shell 调用 C 二进制文件/库中的函数。有些语言支持这一点(例如Pythonc类型)但我不知道 bash (或其他 shell)有任何类似的选项。
您需要使用命令行选项并使用选项/参数调用 C 程序,告诉您的程序调用特定函数。
因此,对于您的示例,您需要执行类似的操作
int main(int argc, char *argv[]) {
if (argc != 2) {
printf("Argument expected\n");
return 1;
}
if (strcmp (argv[1], "funcA") == 0)
funcA();
}
然后你可以像这样从 shell 调用它
$ ./a.out funcA
Congrats..!! This is function A...!!