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?
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With