gpt4 book ai didi

c - 确保 uinput(内核模块)确实在运行/加载加上一些测试代码

转载 作者:太空宇宙 更新时间:2023-11-04 03:01:03 28 4
gpt4 key购买 nike

我正在尝试确保 uinput 正在运行/加载并且它有效。

我无法使用 lsmod 找到设备,但是我可以找到文件/dev/uinput,这是什么意思?

我通过一些谷歌搜索找到了一些代码,这些代码显然是在测试 uinput,它失败并显示“无法创建 UINPUT 设备”。打印到终端。相关代码如下:

if (ioctl(uinp_fd, UI_DEV_CREATE))
{
printf("Unable to create UINPUT device.");
return -1;
}

完整代码可以在这里阅读:http://pastebin.com/tJdUgiDz

所以我的问题是这样的:

是否加载了 uinput?如果是,为什么这段代码不能正常工作?

谢谢。

最佳答案

听起来 uinput 已编译到您的内核中,而不是您使用 lsmod 看到的可加载模块。在 Ubuntu 12.04 上绝对是这种情况。

您的打开可能由于权限问题而失败。

$ ls -l /dev/uinput
crw-r----- 1 root root 10, 223 Sep 22 11:45 /dev/uinput

您可以在每次运行时以 root 身份运行您的程序

$ sudo ./mytest-program

或者创建一个 udev 规则以永久允许任何程序使用 uinput。复制下面的粘贴命令以在 ubuntu 12.04 系统上创建正确的规则并重新启动 udev 服务以使用它

$ sudo bash -c 'echo -e "# allow programs without root permissions to use uinput\n KERNEL==\"uinput\", MODE=\"0666\"" >> /etc/udev/rules.d/50-uinput.rules'
$ sudo restart udev

如果您更关心安全性,您可以为组和 setuid/setgid 设置规则你的可执行文件。

关于c - 确保 uinput(内核模块)确实在运行/加载加上一些测试代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11899557/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com