open() 是 POSIX 原型中的变长参数函数,当调用两个参数版本时 mode=0。当标志中设置了 O_CREAT 位时,第三个参数模式起作用。
我无法得到的是:当调用 open(fname, flags) 时包装器会做什么,其中标志包含 O_CREAT,换句话说,包装器如何知道我没有通过第三个参数模式,因为 va_arg 无法确定是否存在是否传递参数并且只有一个版本的 open 因为它是 C 函数而存在?
open() 是 POSIX 原型中的变长参数函数,当调用两个参数版本时 mode=0。当标志中设置了 O_CREAT 位时,第三个参数模式起作用。
我无法得到的是:当调用 open(fname, flags) 时包装器会做什么,其中标志包含 O_CREAT,换句话说,包装器如何知道我没有通过第三个参数模式,因为 va_arg 无法确定是否存在是否传递参数并且只有一个版本的 open 因为它是 C 函数而存在?