如何以C(独立于平台的方式)让用户回家?
我可以在linux上使用getenv("%HOME%")
和在Windows上使用类似的字符串..但我需要平台独立方式?
答案 0 :(得分:4)
如果未设置getpwuid()
,您还可以在* nix系统上使用$HOME
:
#include <sys/types.h>
#include <pwd.h>
#include <stdio.h>
int main() {
struct passwd *passwdEnt = getpwuid(getuid());
char *home = passwdEnt->pw_dir;
printf("home: %s\n", home);
return 0;
}
答案 1 :(得分:2)
依赖于平台。使用#ifdef's选择方法compiletime。
#if defined(_WIN32)
// get HOMEDRIVE and HOMEPATH from environment
#elif defined(__linux__)
// get HOME from environment
#else
#error Platform not supported yet
#endif
答案 2 :(得分:1)
这取决于你想要什么。如果您需要了解权威原因或需要了解其他用户的主目录,请使用getpwuid_r
。否则,getenv("HOME")
是正确的方法。