2013-07-23 66 views

回答

1

您可以通过调用VIOC_GETPAG pioctl在C程序中做到这一点,最初发布拉斯Allbery here

#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; 
} 

没有为得到一个C程序之外的PAG数量没有官方的接口(还) ;比如说,通过运行一些命令。大多数情况下,您可以通过查看当前流程的补充组列表来确定PAG编号,并查找编号非常高的组。然而,虽然现在大多数情况下是“有效的”,但在某些情况下,这些信息可能不正确,并且不能保证将来在所有平台上都能正常工作。具体而言,在现代Linux上,PAG编号的权威位置位于内核密钥环中,提供组标识只是“尽力而为”,并可能在未来消失。

+0

您能否将发布的链接的详细信息添加到您的答案中。链接的答案不鼓励,因为URL可能会随着时间的推移而中断或改变。 – indivisible

+0

@mbs完成;谢谢。 – adeason

相关问题