Como obter o caminho absoluto para um determinado caminho relativo programaticamente no Linux?

StackOverflow https://stackoverflow.com/questions/2341808

Pergunta

Como obter o caminho absoluto para um determinado caminho relativo programaticamente no Linux?

No caso das janelas, temos o _fullpath() API. Em outras palavras, quero dizer o que é API análoga para _fullpath de Windows no Linux?

Foi útil?

Solução

Como Paulo mencionou, use RealPath (). Observe que, porém, que como muitos sistemas de arquivos no suporte do Linux Links difíceis, qualquer diretório pode ter vários caminhos absolutos diferentes.

Outras dicas

Confira o Realpath função.

#include <stdlib.h> 
#include <stdio.h> 
#include <linux/limits.h>
int main() 
{ 
        char resolved_path[PATH_MAX]; 
        realpath("../../", resolved_path); 
        printf("\n%s\n",resolved_path); 
        return 0; 
} 

Tentar Realpath:

$ man realpath

Isso também está disponível no BSD, OS X, et al.

O que você deseja fazer é adicionar a mesma parte do aplicativo para o mesmo calendário à página.Eu acho que o que você está fazendo é adicionar um novo aplicativo de calendário, adicionando esse novo calendário para a página?Se você adicionar a mesma parte de aplicativo de calendário do selecionador duas vezes, e basta alterar a exibição na segunda parte do aplicativo, você deve obter o que está procurando.

Em execução no Redhat 5.3, o RealPath não existe, mas o ReadLink está instalado. Você pode usá -lo em caminhos e links simbólicos relativos, além de resolver o Symblinks recursivamente para você. É, portanto, uma opção melhor que o Realpath, na minha opinião

readlink -f .

A também é outra maneira útil, como "readlink -m $ filename"

Primeiro de tudo, ele funciona sem a necessidade de existir o arquivo de destino. Em segundo lugar, ele lidará com o Symblinks e fará um caminho realmente real.

// For C++ with Gnome Gtkmm3 libraries
#include <glibmm.h>
#include <giomm.h>

  string PathRel2Abs(string relpath) {
  Glib::RefPtr<Gio::File> file = Gio::File::create_for_path(relpath);
  return file->get_path();
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top