我正在使用硬件设备,在该设备中必须执行一些GPIO操作。
在程序开始时,我调用iopl(3)。该可执行文件不是root拥有的,但是具有功能set-cap_sys_rawio+eip。虽然这在大多数情况下都有效
有时,该过程失败并显示:

iopl: Operation not permitted

能力不足吗?我无法将程序作为root运行。
设备正在运行Ubuntu 14.04.2dmesg / syslogs没有给出
任何提示!

更多细节:

我的main的开头具有以下内容:
if (iopl(3) != 0) {
    perror("iopl");
    assert(!"Failed to set privilege!");
}

尽管这在大多数情况下都可行,但有时在硬件平台上也可以
(基于Intel Atom),这会失败,并且perror打印iopl: Operation not permitted

最佳答案

知道您不能以root用户身份运行该程序,我想您是否尝试过:

 chmod u+s /usr/bin/xinit

或者如果您具有root访问权限,
sudo chmod u+s /usr/bin/xinit

如果未设置setuid(考虑在没有sudo的情况下运行-因为您已经具有root访问权限)
sudo chown root $prefix/Xorgsudo chmod u+s $prefix/Xorg

关于ubuntu-14.04 - iopl()间歇性失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53312865/

10-11 10:26