gpt4 book ai didi

linux - open 的 stdio 系统调用包装器是如何实现的?

转载 作者:太空宇宙 更新时间:2023-11-04 11:18:30 25 4
gpt4 key购买 nike

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

我无法得到的是:当调用 open(fname, flags) where flags contains O_CREAT 时包装器做什么,换句话说,包装器如何知道我没有传递第三个参数模式,因为 va_arg 无法确定是否有参数传递给并且只有一个版本的 open 存在,因为它是一个 C 函数?

最佳答案

不是。

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

关于linux - open 的 stdio 系统调用包装器是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19701621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com