如何以编程方式在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