다른 프로세스가 (유닉스 소켓을 통해) 함수를 호출 할 수있게하려는이 프로그램이 있습니다. 메시지 프로토콜은 매우 간단하며, 함수 이름, 함수 서명 및 매개 변수를 보유하는 버퍼 (char *)입니다.C 스텁이없는 RPC
내 프로그램의 모듈이 기능에 액세스 할 수있게하려는 경우 이름과 서명을 라이브러리에 등록합니다. 내가 직면하고있는 문제는 요청이 들어 오면 물리적으로 함수를 호출하는 것입니다. RPC와 Java RMI와 같은 라이브러리를 살펴 보았지만 호출을 감싸는 스텁을 생성해야합니다. 제가 작업하고있는 시스템은 매우 역동적이며, 수정할 수없는 다른 사람들의 코드와도 인터페이스해야합니다. 요청이 들어 오면, 나는 몇 가지 오류 검사를 할
// func ptr name signature
REG_FUNCTION(somefunc, "somefunc", "i:id");
는, 한 번 유효 내가 원하는 : 나는 도서관에 등록 지금
int somefunc(int someparam, double another)
{
return 1234;
}
: 같은
그러니까 기본적으로, 함수 보일 수 있습니다 함수를 호출합니다. 그래서 변수가 있습니다
void * funcptr = (the requested function);
char * sig = (the function signature);
char * params = (a buffer of function parameters);
//note that the params buffer can hold data types of arbitrary lengths
가 어떻게 C에서 매개 변수를 사용하여 함수를 호출 할 수 있습니다 ?
감사합니다.
서명은 무엇이 필요합니까? 클라이언트가 함수를 호출하거나 somefunc를 포함하는 라이브러리에 요청을 전달합니까? 어떤 설명이 도움이 될 것입니다! – dirkgently