/* gcc xxx.c -o xxx */ #include #include #include int main() { char buf[64]; int ret = getlogin_r(buf, sizeof(buf)); printf("getlogin='%s'; _r='%s', ret=%d\n", getlogin(), buf, ret); char cbuf[64]; cuserid(cbuf); /* return value seems random ?? */ printf("cuserid='%s'\n", cbuf); uid_t id = geteuid(); struct passwd pwd, *ppwd; char bufbuf[1024]; int pret = getpwuid_r(id, &pwd, bufbuf, sizeof(bufbuf), &ppwd); printf("getpwuid='%s' -- %p vs %p\n", ppwd->pw_name, &pwd, ppwd); return 0; }