Domanda

Sto scrivendo un programma C in Linux.Comandi come execv() richiedono un percorso sotto forma di stringa C.Esiste un comando che restituirà il percorso corrente sotto forma di una stringa in stile c?

È stato utile?

Soluzione

getcwd():

SINOSSI

#include <unistd.h>

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

DESCRIZIONE

IL getcwd() La funzione inserirà un percorso assoluto della directory di lavoro corrente nell'array puntato da buf e restituisce buf.Il percorso copiato nell'array non deve contenere componenti che siano collegamenti simbolici.IL misurare argomento è la dimensione in byte dell'array di caratteri puntato da buf discussione.Se buf è un puntatore nullo, il comportamento di getcwd() non è specificato.

VALORE DI RITORNO

Una volta completato con successo, getcwd() restituirà il buf discussione.Altrimenti, getcwd() restituirà un puntatore nullo e verrà impostato err per indicare l'errore.Il contenuto dell'array puntato da buf sono quindi indefiniti....

Altri suggerimenti

IL sentiero l'argomento di execv() è il percorso dell'applicazione che desideri eseguire, non la directory di lavoro corrente (che verrà restituita da getcwd()) o il percorso di ricerca della shell (che verrà restituito da getenv("PATH")).

A seconda di cosa stai facendo, potresti ottenere più risultati dalla funzione system() nella libreria C piuttosto che dalla famiglia exec() di livello inferiore.

Questo è non ANSI C:

#include <unistd.h>

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

Se il percorso può essere un percorso relativo, dovresti essere in grado di usare ". o './' come percorso.Non sono sicuro che funzionerà, ma potresti provarlo.

Non sono un programmatore professionista quindi questa non è una risposta esatta.

Quello che devi fare è prendere la variabile d'ambiente PWD (presente directory di lavoro)

Non sono sicuro in quale libreria si trovi, ma è un'intestazione Linux standard.

Mi guarderò intorno e vedrò se riesco a trovarlo.

modificare:

stavo pensando agetenv() che potrebbe essere d'aiuto se hai bisogno anche di eseguire comandi di sistema e hai bisogno dei vari percorsi dei contenitori situati in PATH

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top