Я хочу реализовать оболочку над системным вызовом open, и я использую трюк LD_PRELOAD для вызова моего нового open.
Проблема в том, что open ожидает переменное число аргументов, и я не могувыяснить, как вызывать open с тем же набором аргументов, поскольку open не может принимать указатель va_list в качестве аргумента (или я не знаю ни одной такой функции).
Как я могу этого достичь?
код до сих пор:
#define _GNU_SOURCE
#include <stdio.h>
#include <dlfcn.h>
typedef int (*open_func_t)(const char*, int, ...)
int open(const char *pathname, int flags, ...){
// some custom code
// what args should I supply to dlsym?
return ((open_func_t)dlsym(RTLD_NEXT, "open"))(args);
}