问题 I ran into this question while typing man 2 open . It says that there are two kinds of open, one with two args, and one with three! last time i checked we could not overload functions in C. How did they do this? did they write in C++? int open(const char * pathname, int flags); int open(const char * pathname, int flags, mode_t mode); 回答1: No, they just used variadic function. int open(const char * pathname, int flags, ...); This makes the last argument mode optional. The prototypes only show