【问题标题】:ioperm is working without root permissionioperm 在没有 root 权限的情况下工作
【发布时间】:2019-11-13 03:44:19
【问题描述】:

我读到我们需要超级用户权限才能从用户空间访问 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

这是预期的行为吗

【问题讨论】:

  • 使用strace解码系统调用;该健全性检查会向您显示ioperm 正在返回-EPERM。投票结束为题外话:错字/不是真正的问题。

标签: c linux io x86


【解决方案1】:

来自the manual

成功时,返回零。出错时,返回 -1,并适当设置 errno。

你有这个倒退。 -1 表示失败,但您的代码错误地认为它表示成功。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-25
    • 2011-05-16
    • 2013-07-15
    • 2015-11-12
    • 2011-10-23
    • 2013-05-29
    • 1970-01-01
    相关资源
    最近更新 更多