2013-10-31 26 views
0

open()是POSIX原型中的可變長度參數函數,調用兩個參數版本時mode = 0。當標誌中設置了O_CREAT位時,第三個參數模式起作用。stdio系統如何調用open的wrapper實現?

什麼我不能得到的是: 什麼包裝紙做的時候開(FNAME,旗)被調用其中flags包含O_CREAT,換句話說,包裝怎麼知道我我以前不通過第三個參數模式作爲在va_arg東西不能確定是否有參數傳遞給和只有一個版本的開放存在,因爲它是一個C函數?

回答

1

它沒有。

實現將在每遇到O_CREAT標誌時評估第三個參數。如果您未傳遞第三個參數,則行爲未定義,與您對printf說明其參數(例如,通過%s作爲格式字符串,但忘記實際傳遞要插入的字符串)的方式大致相同。