我读到我们需要超级用户权限才能从用户空间访问I / O端口。但是我说的是不同的行为。 ioperm在普通用户下成功。
#include <stdio.h>
#include <errno.h>
#include <sys/io.h>
int main(int argc, char *argv[])
{
if (!ioperm(0x70, 3, 1)) {
perror("ioperm failed");
}
else {
printf("ioperm on 0x70 success\n");
}
return 0;
}
$ ./prog
ioperm on 0x70 success
这是预期的行为
最佳答案
从the manual:
成功时,返回零。如果出错,则返回-1,并正确设置errno。
你有这个倒退。 -1表示失败,但是您的代码错误地认为这表示成功。