open()系统调用多态

时间:2013-03-01 05:50:30

标签: c system-calls

我刚刚发现open()(man 2 open)系统调用有两个版本:

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

事实上,人们可以在单个C文件中使用它们都可以工作。标准C如何实现这一目标?

2 个答案:

答案 0 :(得分:4)

它可以作为变量参数函数来完成。

open的POSIX文档指定如下:

int open(const char *path, int oflag, ...);

答案 1 :(得分:4)

实际上,它不是C ++风格的函数重载。只是open()是可变的:

int open(const char *fname, int flags, ...);

只有“标志”需要它,它才会寻找第三个参数。