Pergunta

Estou escrevendo um programa C no Linux.Comandos como execv() requerem um caminho na forma de uma string C.Existe um comando que retornará o caminho atual na forma de uma string estilo c?

Foi útil?

Solução

getcwd():

SINOPSE

#include <unistd.h>

char *getcwd(char *buf, size_t size);

DESCRIÇÃO

O getcwd() A função deve colocar um nome de caminho absoluto do diretório de trabalho atual na matriz apontada por buf, e retornar buf.O nome do caminho copiado para o array não deve conter componentes que sejam links simbólicos.O tamanho argumento é o tamanho em bytes da matriz de caracteres apontada pelo bufante argumento.Se bufante é um ponteiro nulo, o comportamento de getcwd() não é especificado.

VALOR DE RETORNO

Após a conclusão bem-sucedida, getcwd() devolverá o bufante argumento.De outra forma, getcwd() deve retornar um ponteiro nulo e definir errno para indicar o erro.O conteúdo do array apontado por bufante são então indefinidos ....

Outras dicas

O caminho argumento para execv() é o caminho para o aplicativo que você deseja executar, não o diretório de trabalho atual (que será retornado por getcwd()) ou o caminho de pesquisa do shell (que será retornado por getenv("PATH")).

Dependendo do que você está fazendo, você pode aproveitar mais a função system() na biblioteca C do que a família exec() de nível inferior.

Isso é não ANSI C:

#include <unistd.h>

char path[MAXPATHLEN];
getcwd(path, MAXPATHLEN);
printf("pwd -> %s\n", path);

Se o caminho puder ser um caminho relativo, você poderá usar '.' ou './' como o caminho.Não tenho certeza se funcionará, mas você pode tentar.

Não sou um programador profissional, então esta não é uma resposta exata.

O que você precisa fazer é pegar a variável de ambiente PWD (atual diretório de trabalho)

Não tenho certeza de qual biblioteca está, mas é um cabeçalho padrão do Linux.

Vou dar uma olhada e ver se consigo encontrar.

editar:

Eu estava pensando,getenv() o que ajudaria se você também precisasse executar comandos do sistema e precisar dos vários caminhos de bin localizados em PATH

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top