C/C++ FAQ

Jak pobrać katalog domowy użytkownika w systemie Linux

flabra
#include <unistd.h>
#include <sys/types.h>
#include <pwd.h> 
// ...
 
  char* pwdbuffer;
  struct passwd pd;
  struct passwd* tempPwdPtr;
  long ile=sysconf(_SC_GETPW_R_SIZE_MAX);
  pwdbuffer=(char*)malloc(ile);
  if(pwdbuffer){
    if(!getpwuid_r(getuid(),&pd,pwdbuffer,ile,&tempPwdPtr)){
      print("%s\n",pd.pw_dir);
    }
    free(pwdbuffer)
  }

Nie tyle chodzi o sam katalog domowy tylko o prawidłowy sposób pobierania struktury passwd, zwłaszcza w programie wielowątkowym.

FAQ

2 komentarzy

"Nie tyle chodzi o sam katalog domowy tylko o prawidłowy sposób pobierania struktury passwd, "

A nie lepiej pobrać ze zmiennej środowiskowej?