2013-07-23 105 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

相關問題