小编Pet*_*r M的帖子

我在哪里可以找到记录的 ioctl EVIOCGRAB?

我想ioctl EVIOCGRAB在基于 C 的程序中使用该函数,并且通过谷歌搜索我找到了使用该函数的各种示例源代码,但我正在努力寻找正确描述如何正确使用它的明确文档。

我从ioctl(2)看到,ioctl函数被定义为

int ioctl(int d, unsigned long request, …);
Run Code Online (Sandbox Code Playgroud)

然后:

   The third argument is an untyped pointer to memory.  It's traditionally char
   *argp (from the days before void * was valid C), and will be so named
   for this discussion.
Run Code Online (Sandbox Code Playgroud)

我希望EVIOCGRABioctl_list(2) 中找到,但事实并非如此。

所以我不知道EVIOCGRAB函数的第三个参数应该是什么。在看到各种示例代码之后,我所能做的就是假设一个非零值抓住了设备,而一个零值释放了它。

我从随机代码示例中得到的,例如

int grab = 1;
ioctl(fd, EVIOCGRAB, &grab);
..
ioctl(fd, EVIOCGRAB, NULL); 
Run Code Online (Sandbox Code Playgroud)

或者

ioctl(fd, EVIOCGRAB, (void*)1);
..
ioctl(fd, EVIOCGRAB, …
Run Code Online (Sandbox Code Playgroud)

linux documentation ioctl

6
推荐指数
1
解决办法
5538
查看次数

标签 统计

documentation ×1

ioctl ×1

linux ×1