gpt4 book ai didi

c++ - 替换 Windows 中的 readlink() 函数

转载 作者:太空狗 更新时间:2023-10-29 23:13:23 28 4
gpt4 key购买 nike

readLink() 存在于 linux 中并在 unistd.h 中定义,请提供 windows 中是否有任何类似类型的函数,否则我们是否可以制作具有类似功能的函数。我想使用相同的功能作为 readLink() 请提供一个用户定义的函数来替换函数,以防没有预定义的函数提供代码截图

        char buffer[2048];

readlink("/proc/self/exe", buffer, 2048);

std::stringstream ss;
ss << buffer;
std::string exeFile = ss.str();
std::string directory;

const size_t last_slash_idx = exeFile.rfind('/');
if (std::string::npos != last_slash_idx)
{
directory = exeFile.substr(0, last_slash_idx);
}
return directory;
#endif

最佳答案

好的,如评论中所述,Windows 本身没有 readlink() 链接 api。也就是说,示例中给出的代码正在做一些实际上不需要由程序直接处理的事情。 Linux 系统 api 为您处理链接。 readlink 也不会 null 终止它只返回原始数据。也就是说,QFile 提供了一个独立于平台的 api 来解析链接。 QFile::symLinkTarget 提供了一种在 windows 和 unix 上获取链接目标的方法,而您的程序不需要与操作系统特定的方面混淆。

执行此操作的 Windows 进程不像在 linux/unix 系统上那样是单行的。事实上,Windows 上实际上有两种不同类型的链接。我强烈建议在尝试进行跨平台 I/O 时使用 Qt 等框架。 Windows 与典型的 linux/unix 系统截然不同。一方面,它不是 POSIX 系统,必须是 linux/unix 系统。

关于c++ - 替换 Windows 中的 readlink() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39785170/

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