Linux의 clone
함수를 LD_PRELOAD하려고합니다. 내 LD_PRELOADed 버전에서는 원래 clone
함수를 호출하기 전에 입력 매개 변수를 기록해야합니다. 그러나 문제는 clone
이 가변 개수의 인수를 취한다는 것입니다. 그것은 이렇게 선언됩니다.복제 함수의 가변 인수 수 계산
int clone(int (*fn)(void *), void *child_stack, int flags, void *arg, ...
/* pid_t *pid, struct user_desc *tls, pid_t *ctid */);
내가 그렇게 할 수있는 방법. 내가 전달 된 인수의 수를 알고 있어야합니다, 원래 clone
기능이 인수를 전달하는 방법?
그래도 LD_PRELOAD 코드 (또는 적어도 일부 골격)가 있습니까? 이후 나는 똑같은 일을하려고하고 또한 clone() varags에 붙어있다. * va_ *의 구현에 기반하여 수용된 대답을 나열하면 스택에있는 데이터를 그냥 먹어 버릴 것이라고 생각합니다. 호출자는 항상 호출 수신자에게 사용할 인수 (종료 자, 형식 문자열 또는 sth 수)를 알려야합니다. – fiction