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 не имеет api-ссылки readlink () как таковой. При этом код, приведенный в примере, выполняет то, что действительно не нужно обрабатывать непосредственно программой. Linux System API обрабатывает ссылки для вас. Кроме того, readlink не завершает null, он просто возвращает необработанные данные При этом QFile предлагает независимый от платформы API для разрешения ссылок. QFile::symLinkTarget
предоставляет способ получить цель ссылки как в Windows, так и в Unix, и вашей программе не нужно связываться с этой частью ОС.
Процесс Windows для этого не однострочный, как в системах Linux / Unix. На самом деле есть два разных типа ссылок на окнах. Я настоятельно рекомендую использовать такую среду, как Qt, при попытке кросс-платформенного ввода-вывода. Windows — это совсем другое животное, чем ваша типичная система linux / unix. Во-первых, это не система POSIX, а системы linux / unix.
Других решений пока нет …