如何将stdio系统调用打开包装器实现?

时间:2013-10-31 08:32:24

标签: linux posix system-calls stdio

open()是POSIX原型中的可变长度参数函数,当调用两个参数版本时,mode = 0。当在标志中设置O_CREAT位时,第三个参数模式有效。

我不能得到的是: 当打开(fname,flags)时,包装器执行什么操作,其中flags包含O_CREAT,换句话说,包装器如何知道我没有通过第三个参数模式,因为va_arg事物无法确定是否有参数传递给并且只有一个版本的open存在,因为它是一个C函数?

1 个答案:

答案 0 :(得分:1)

没有。

只要看到O_CREAT标志,实现就会评估第三个参数。如果你没有传递第三个参数,那么行为是未定义的,就像你对printf关于它的参数撒谎一样(例如传递%s作为格式字符串,但忘记实际传递要插入的字符串。)