Estou tentando usar std::filesystem::current_path()
para alterar o diretório de trabalho para algo que pode ser um symlink. Se o alvo for um symlink, o link está sendo resolvido e o diretório de trabalho se torna o alvo do link em vez do caminho que especifiquei. Meu principal problema com isso é que ele torna os caminhos relativos incorretos.
Como exemplo:
#include <filesystem>
#include <iostream>
using namespace std;
using namespace std::filesystem;
auto main(int, char **) -> int {
// create absolute directory then symlink to it
create_directory("/tmp/tgt");
create_directory_symlink("/tmp/tgt", "/tmp/dir");
cout << "cwd0: " << current_path() << '\n';
current_path("/tmp/dir");
cout << "cwd1: " << current_path() << '\n';
remove("/tmp/tgt");
remove("/tmp/dir");
return 0;
}
Executando isso de dentro do /tmp
diretório, a saída é.
cwd0: "/tmp"
cwd1: "/tmp/tgt"
mas o que eu quero é cwd1
mostrar/tmp/dir
Existe um mecanismo portátil para alterar o diretório de trabalho para um link simbólico?