Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get home directory in Linux

Tags:

c++

c

linux

I need a way to get user home directory in C++ program running on Linux. If the same code works on Unix, it would be nice. I don't want to use HOME environment value.

AFAIK, root home directory is /root. Is it OK to create some files/folders in this directory, in the case my program is running by root user?

like image 269
Alex F Avatar asked May 26 '10 05:05

Alex F


1 Answers

You need getuid to get the user id of the current user and then getpwuid to get the password entry (which includes the home directory) of that user:

#include <unistd.h> #include <sys/types.h> #include <pwd.h>  struct passwd *pw = getpwuid(getuid());  const char *homedir = pw->pw_dir; 

Note: if you need this in a threaded application, you'll want to use getpwuid_r instead.

like image 164
R Samuel Klatchko Avatar answered Sep 21 '22 14:09

R Samuel Klatchko