2010-05-27 15 views
5

Vorrei mettere un tipo di file di blocco nella home directory dell'utente su linux (da C++) ma fopen'ing ~/.fluudit non sembra funzionare.come aprire un file nella cartella home dell'utente

fopen("~/.fluudit","w"); //fails 
+0

~ non funziona qui perché è il guscio che si traduce ~ ad Home appropriata. La shell sostituisce il carattere speciale (~) nella riga di comando sul percorso assoluto. Quindi ~ non può essere usato nei programmi C o C++. – srikanta

risposta

10

È possibile utilizzare la variabile di ambiente HOME e se questo non è presente, è possibile utilizzare il database delle password:

#include <unistd.h> 
#include <sys/types.h> 
#include <pwd.h> 

struct passwd *pw = getpwuid(getuid()); 

const char *homedir = pw->pw_dir; 
4

L'espansione ~, per esempio, si chiama getenv("HOME") globbing ed è qualcosa che devi fare prima. Non hai detto quali librerie o framework stai usando, ma alcuni lo forniscono.

Problemi correlati