쉘 스크립트에서 C 소스 파일의 특정 함수를 호출하는 방법은 무엇입니까?

쉘 스크립트에서 C 소스 파일의 특정 함수를 호출하는 방법은 무엇입니까?

일부 기능이 포함된 C 소스 파일이 있습니다. 쉘 스크립트에서 특정 기능을 호출하고 싶습니다. sample.c다음 내용이 포함된 파일이 있습니다 . funcA쉘 스크립트에서 이것을 호출 하고 싶습니다 . 어떻게 해야 하나요?

#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 funcAfuncA

파일이 호출된다고 가정하면 foo.c쉘 스크립트에서 호출될 때 funcA파일의 기능을 실행하는 다음 쉘 스크립트를 사용할 수 있습니다.foo.ccall foo.c funcA

call() {
    cc -Wl,-e"$2" $1 && ./a.out
}

답변2

C 바이너리/라이브러리의 함수는 셸에서 직접 호출할 수 없습니다. 일부 언어에서는 이를 지원합니다(예: PythonC타입) 그러나 bash(또는 다른 쉘)에 대한 유사한 옵션은 없습니다.

명령줄 옵션을 사용하고 옵션/인수를 사용하여 C 프로그램을 호출하여 특정 함수를 호출하도록 프로그램에 지시해야 합니다.

예를 들어 다음과 같은 작업을 수행합니다.

int main(int argc, char *argv[])  {

   if (argc != 2) {
      printf("Argument expected\n");
      return 1;
   }
   
   if (strcmp (argv[1], "funcA") == 0)
      funcA();
}

그런 다음 쉘에서 다음과 같이 호출할 수 있습니다.

$ ./a.out funcA
Congrats..!! This is function A...!!

관련 정보