Eu explico nos comentários dentro do código o que está estranho. Até onde entendi, o problema é que não estou sabendo converter uma std::string dentro da função readlink, porque os resultados são completamente estranhos e diferentes do que eu esperava. Visto que usando char funciona!
int main() {
char Path1[501];
readlink("/proc/self/exe", Path1, 500);
std::cout << Path1 << '\n'; // RESULT OK: /home/nick/Desktop/Encyclopedia/Test
// SE As linhas acima estiverem comentadas, o Resultado abaixo será:
// ERRADO! De onde saiu esse @ ???
// /home/nick/Desktop/Encyclopedia/Test@
// Se eu deixar todos os comandos rodando como está agora, fica ainda mais estranho
// ERRADO! Que caminho louco é esse???
// /home/nick/Desktop/Encyclopedia/Testncyclopedia/Test
std::string Path2;
readlink("/proc/self/exe", (char*)Path2.c_str(), 500); // Assim ou da forma abaixo o RESULT é o mesmo!
//readlink("/proc/self/exe", const_cast<char*>(Path2.c_str()), 500);
// Conforme explico acima, isso me retorna 2 valores diferentes, mudam se eu comentar as 3 primeiras linhas do programa ou se deixar os 2 comandos readlink
std::cout << Path2.c_str() << '\n';
}
Eu tenho o mesmo problema com getcwd e talvez até outros comandos. Ainda não consigo converter direito std::string para char, const char e etc...