gpt4 book ai didi

c++ - 符号链接(symbolic link)和文件重定向

转载 作者:行者123 更新时间:2023-11-30 02:10:54 24 4
gpt4 key购买 nike

在 C++ 中,我将如何检查我们打开的文件是否通过符号链接(symbolic link)重定向?这是我的文件开启器处理程序:

 f=fopen(addr.c_str(), "rb");

提前致谢

最佳答案

如果您使用 stat(),它将自动跟随符号链接(symbolic link)。如果您使用 fstat(),则符号链接(symbolic link)将被跟踪,因为文件将被打开以获取文件描述符。

在这种特殊情况下,lstat() 优于 stat() 和 fstat(),因为它不遵循符号链接(symbolic link)。调用 lstat() 之后,再调用 open()。但是,这种方法存在固有的竞争条件问题;在对 lstat() 和 open() 的调用之间可能会出现另一个进程/线程/任务,并将文件更改为符号链接(symbolic link)。

幸运的是,这个竞争条件有一个解决方案。使用 open() 打开文件时,您可以使用标志 O_NOFOLLOW。如果有符号链接(symbolic link),这将告诉 open() 不要遵循符号链接(symbolic link)。但是,您仍然需要知道您打开的文件是否是符号链接(symbolic link)(但未跟随)。为此,使用从 open() 返回的文件描述符和 fstat()。

希望这对您有所帮助。

关于c++ - 符号链接(symbolic link)和文件重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4237439/

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