2013-07-23 2 views

답변

1

, 원래 러스 Allbery here에 의해 게시 : C 프로그램의 외부 PAG 번호를 얻기 위해 (아직) 공식적인 인터페이스가 없습니다

#include <stdio.h> 
#include <afs/param.h> 
#include <afs/afssyscalls.h> 
#include <afs/vice.h> 
#include <afs/vioc.h> 

int 
main(void) 
{ 
    struct ViceIoctl iob; 
    afs_uint32 pag; 
    int code; 

    iob.in = NULL; 
    iob.in_size = 0; 
    iob.out = (void *) &pag; 
    iob.out_size = sizeof(pag); 
    code = pioctl(NULL, VIOC_GETPAG, &iob, 0); 
    if (code != 0) { 
     fprintf(stderr, "Cannot get PAG\n"); 
     return 1; 
    } 
    printf("PAG number is: %lu\n", (unsigned long) pag); 
    return 0; 
} 

; 몇 가지 명령을 실행하여 말하십시오. 대부분 현재 프로세스의 보충 그룹 목록을보고 매우 높은 번호의 그룹을 찾아 PAG 번호를 결정할 수 있습니다. 그러나 이것이 현재 대부분 "작동"하는 동안,이 정보가 부정확 한 경우도 있으며 모든 플랫폼에서 앞으로는 작동하지 않을 수도 있습니다. 특히 현대 리눅스에서는 PAG 번호의 권위있는 위치가 커널 키링에 있으며 그룹 ID를 제공하는 것은 "최선의 노력"일 뿐이며 앞으로는 사라질 수도 있습니다.

+0

답변에 게시 된 링크의 세부 정보를 추가 할 수 있습니까? URL이 끊어 지거나 시간이 지남에 따라 변경 될 수 있으므로 링크 응답은 권장되지 않습니다. – indivisible

+0

@mbs 완료; 감사. – adeason

관련 문제