Why does 'man 2 open' say that there are two kinds of open?

前端 未结 3 2123
北恋
北恋 2021-02-19 01:10

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

3条回答
  •  失恋的感觉
    2021-02-19 01:45

    No, they just used variadic function.

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

    This makes the last argument mode optional. The prototypes only show how the function should be used, not the actual interface.

    Of course, unlike real overloading, the compiler cannot type-check the mode argument, so the user have to be extra careful to ensure only 2 or 3 arguments are passed, and the 3rd argument must be a mode_t.


    BTW, if you check the man 2 open for BSD (including OS X) it shows the correct prototype as above.

提交回复
热议问题