Linux System Programming 에서 Open 함수를 쓸때 궁금한 것이 있습니다.
글쓴이: tomy2174 / 작성시간: 화, 2013/03/19 - 7:39오후
안녕하세요 Linux System Programming을 사용하는 한 학생인데요
open 함수는
int open (const char* name, int flags);
처럼 구현이 가능한데 문제점은
int open (const char* name, int flags, mode_t mode);
로도 구현이 가능하다고 보고 테스트를 해보니 둘다 됩니다.
그런데 C언어는 오버로딩이 구현이 불가능하고 가변 인자도 아닌데 어떻게 위의 경우가 가능한가요??
Forums:
glibc/io/open.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;
}
댓글 달기