2013-04-13 15 views

risposta

17

POSIX fornisce wordexp(3) per eseguire espansioni di tipo shell, inclusa l'espansione della tilde.

4

La tilde in un percorso è una cosa specifica della shell. Quello che puoi fare è vedere se il primo carattere è una tilde e una barra (o una fine tilde della stringa), quindi sostituire la tilde con il valore della variabile di ambiente HOME (che puoi ottenere da getenv).

Se il secondo carattere è non una barra, è molto probabile sotto forma di ~user/path. Quindi devi estrarre il nome utente e utilizzare per es. getpwnam per ottenere l'immissione della password dell'utente, che contiene la home directory dell'utente.

13

Si può utilizzare wordexp esempio di seguito

#include <stdio.h> 
#include <wordexp.h> 

int main(int argc, char* argv[]) { 
    wordexp_t exp_result; 
    wordexp(argv[1], &exp_result, 0); 
    printf("%s\n", exp_result.we_wordv[0]); 
} 
+2

Se si utilizza questa funzione in una funzione, è necessario aggiungere 'wordfree (& exp_result);' per evitare perdite di memoria. – ishmael

Problemi correlati