如何让用户在C(独立于平台的方式)回家?

时间:2011-03-12 12:35:39

标签: c

如何以C(独立于平台的方式)让用户回家?

我可以在linux上使用getenv("%HOME%")和在Windows上使用类似的字符串..但我需要平台独立方式?

3 个答案:

答案 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")是正确的方法。