Как написать функцию-обертку для open, которая принимает переменное количество аргументов? - PullRequest
0 голосов
/ 24 марта 2019

Я хочу реализовать оболочку над системным вызовом 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);
}
...