Linux System Programming 에서 Open 함수를 쓸때 궁금한 것이 있습니다.

tomy2174의 이미지

안녕하세요 Linux System Programming을 사용하는 한 학생인데요

open 함수는

int open (const char* name, int flags);

처럼 구현이 가능한데 문제점은

int open (const char* name, int flags, mode_t mode);

로도 구현이 가능하다고 보고 테스트를 해보니 둘다 됩니다.

그런데 C언어는 오버로딩이 구현이 불가능하고 가변 인자도 아닌데 어떻게 위의 경우가 가능한가요??

익명 사용자의 이미지

/* Open FILE with access OFLAG. If OFLAG includes O_CREAT,
a third argument is the file protection. */
int
__libc_open (file, oflag)
const char *file;
int oflag;
{
int mode;

if (file == NULL)
{
__set_errno (EINVAL);
return -1;
}

if (oflag & O_CREAT)
{
va_list arg;
va_start(arg, oflag);
mode = va_arg(arg, int);
va_end(arg);
}

__set_errno (ENOSYS);
return -1;
}