0
在AFS(安德魯文件系統)中,單獨的進程可以放入不同的PAG中,我的問題是:如何以編程方式獲得某個進程的PAG編號?謝謝。如何以編程方式在AFS中獲得PAG編號?
在AFS(安德魯文件系統)中,單獨的進程可以放入不同的PAG中,我的問題是:如何以編程方式獲得某個進程的PAG編號?謝謝。如何以編程方式在AFS中獲得PAG編號?
您可以通過調用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編號的權威位置位於內核密鑰環中,提供組標識只是「盡力而爲」,並可能在未來消失。
您能否將發佈的鏈接的詳細信息添加到您的答案中。鏈接的答案不鼓勵,因爲URL可能會隨着時間的推移而中斷或改變。 – indivisible
@mbs完成;謝謝。 – adeason