2014-09-02 5 views
2

사과의 <utmpx.h>에 정의 된 getutxent() 함수를 사용하여 현재 로그인 한 사용자의 목록을 가져 오려고합니다. 현재 사용하고있는 테스트 코드는 다음과 같습니다.OSX 요세미티 getutxent()가 동일한 사용자를 두 번 반환했습니다

#include <stdio.h> 
#include <utmpx.h> 

int main(void) { 
    setutxent(); 
    while (1) { 
     struct utmpx *user_info = getutxent(); 
     if (user_info == NULL) break; 
     printf("%s\n", user_info->ut_user); 
    } 
    return 0; 
} 

로그인 한 사용자 만 테스트하고 있습니다. 내가 얻는 결과는 다음과 같습니다.

myusername 
myusername 

사용자 이름이 두 번 나타나는 이유는 무엇입니까? 여러 사용자가있는 경우 그렇게 될까요? 내 맥에 대한

세부 사항 : enter image description here

+1

요세미티는 베타 제품입니다. 이것은 최종 릴리스에서 수정 된 알려진 문제점 일 수 있습니다. Apple 개발자 포럼 (https://devforums.apple.com/ – TheDarkKnight

+1

@ Merlin069)에서이 질문을하는 것이 좋습니다. – jamespick

답변

3

getutxent() 사용자를보고하지 않습니다, 그것은 세션을보고합니다.

여러 세션 (예 : 터미널 세션)이 열려 있으면 사용자 계정 데이터베이스에 기록되어 맹목적으로 검색됩니다. utmpx 구조의 ut_idud_line 요소를 확인하여이를 확인할 수 있습니다. ut_user이 같은 인스턴스마다 다릅니다. 별도의 프로세스 (터미널을 사용하고 있다면 터미널)에 있습니다.