프로그램에서 환경 (getenv, ...)을 사용하지 않고 실제 "사용자 이름"을 어떻게 얻을 수 있습니까?Linux의 C/C++에서 사용자 이름을 얻는 방법은 무엇입니까?
답변
getlogin_r()
이 unistd.h
에 정의 된 함수 너를 돌려 준다. sername. 자세한 내용은 man getlogin_r
을 참조하십시오.
그것의 서명은 다음과 같습니다
int getlogin_r(char *buf, size_t bufsize);
없이 말을,이 기능이 그냥 간단하게 C 또는 C++로 호출 할 수 있습니다.
@ Armed9Gagger, POSIX에 정의 된 API에 대한 C++ 라이브러리가 없습니다.C++은 * POSIX 함수를 사용하기로되어 있습니다 *. – spatz
주 getlogin_r은 프로세스의 제어 터미널에 로그인 한 사용자의 이름을 반환합니다. 이것은 작업이 실행중인 사용자와 다를 수 있습니다. 이 기능은 제어 터미널에 연결되어 있지 않은 경우에도 실패합니다 (예 : 프로세스가 디먼으로 처리 될 때). –
getlogin() 더 간단합니다 – rohitsakala
http://www.unix.com/programming/21041-getting-username-c-program-unix.html에서 :
/* whoami.c */
#define _PROGRAM_NAME "whoami"
#include <stdlib.h>
#include <pwd.h>
#include <stdio.h>
int main(int argc, char *argv[])
{
register struct passwd *pw;
register uid_t uid;
int c;
uid = geteuid();
pw = getpwuid (uid);
if (pw)
{
puts (pw->pw_name);
exit (EXIT_SUCCESS);
}
fprintf (stderr,"%s: cannot find username for UID %u\n",
_PROGRAM_NAME, (unsigned) uid);
exit (EXIT_FAILURE);
}
그냥 메인 라인을 가지고 수업을 캡슐화 : 만 C를 들어
class Env{
public:
static std::string getUserName()
{
register struct passwd *pw;
register uid_t uid;
int c;
uid = geteuid();
pw = getpwuid (uid);
if (pw)
{
return std::string(pw->pw_name);
}
return std::string("");
}
};
:
const char *getUserName()
{
uid_t uid = geteuid();
struct passwd *pw = getpwuid(uid);
if (pw)
{
return pw->pw_name;
}
return "";
}
모든 C 함수 *가 아니라 C * 표준 라이브러리 *를 사용할 수있는 가능성이있다. 작업을 수행하기 위해 C 함수를 직접 또는 간접적으로 사용해야합니다. – Kos
유익하기 때문에, 프로그램에 endpwent() 호출이 누락되지 않았습니까? –
맞습니다. 고맙습니다. 코드를 업데이트하겠습니다. –
- 1. JSp에서 로그인 사용자 이름을 얻는 방법은 무엇입니까?
- 2. aspnet_users에서 모든 사용자 이름을 얻는 방법은 무엇입니까?
- 3. 이 쿼리에서 사용자 ID가있는 사용자 이름을 얻는 방법은 무엇입니까? (MySQL)
- 4. 브라우저의 이름을 얻는 방법은 무엇입니까?
- 5. PHP에서 사용자 OS 이름을 얻는 방법?
- 6. Mac OS에서 PID를 사용하여 프로세스 사용자 이름을 얻는 방법은 무엇입니까?
- 7. EL을 사용하여 사용자 이름을 얻는 올바른 방법은 무엇입니까?
- 8. ant를 사용하여 마지막 svn 커밋의 사용자 이름을 얻는 방법은 무엇입니까?
- 9. 대칭 키 작업으로 사용자 이름을 얻는 방법은 무엇입니까?
- 10. openSSO/openam 시스템에서 사용자 이름을 얻는 방법은 무엇입니까?
- 11. vi/vim 편집기에서 사용자 이름을 얻는 방법은 무엇입니까?
- 12. 사용자 이름을 Windows 이벤트 로그에 기록하도록 EventLog를 얻는 방법은 무엇입니까?
- 13. Javascript로 요소 이름을 얻는 방법은 무엇입니까?
- 14. 셀에 현재 사용자 이름을 표시하는 방법은 무엇입니까?
- 15. org.springframework.dao.DataIntegrityViolationException에서 제약 조건 이름을 얻는 방법은 무엇입니까?
- 16. 사용자 위치 이름을 가져 오는 방법은 무엇입니까?
- 17. Twitterizer - 사용자 이름을 얻는 방법
- 18. windows 사용자 이름을 얻는 방법
- 19. SearchResultEntry의 사용자 이름을 얻는 방법
- 20. C에서 Linux의 실제 CPU 수를 얻는 방법은 무엇입니까?
- 21. 메아리로 현재 사용자 이름을 얻는 방법
- 22. Instagram API 사용자 ID를 얻는 방법은 무엇입니까?
- 23. Facebook에서 대체 이름을 얻는 방법은 무엇입니까?
- 24. 응용 프로그램의 프로세스 이름을 얻는 방법은 무엇입니까?
- 25. Boost.Test에서 현재 테스트의 이름을 얻는 방법은 무엇입니까?
- 26. PDO에서 데이터베이스 이름을 얻는 방법은 무엇입니까?
- 27. android에서 연결된 네트워크의 이름을 얻는 방법은 무엇입니까?
- 28. iPhone의 PhotoLibrary에서 사진의 이름을 얻는 방법은 무엇입니까?
- 29. CodeIgniter에서 현재 뷰 이름을 얻는 방법은 무엇입니까?
- 30. 다른 클래스에서 컨트롤러 이름을 얻는 방법은 무엇입니까?
c와 C++ 기능의 차이점은 무엇입니까? 당신은 클래스 방법을 의미합니까 ?? – AlexTheo
난 단지 C 함수를 사용하지 말아야한다. – Zat42
POSIX API는 모두 C 함수로 정의되며, C++에서 모두 똑같이 호출 될 수있다. 나는 당신의 제한을 이해하지 못합니다. – spatz