ioctl相关内容

在 FreeBSD 上使用 IP 枚举所有网络接口

我的应用程序需要列出机器上的所有网络接口及其 IP、IPv4 和 IPv6. 我可以使用 ioctl(SIOCGIFCONF) 获取所有带有 IPv4 IP 的接口,但我也需要 IPv6 IP. 在 Linux 上,这些可以从/proc/net/if_inet6 获得,但我在 FreeBSD 上从哪里获得? 解决方案 getifaddrs(3) 提供了可移植的方式来获取网络地址 ..
发布时间:2022-01-19 16:34:55 其他开发

使用 linux 宏 access_ok() 有什么意义

我一直在做一些研究,但我对这个宏有点困惑.希望有人能给我一些指导.我有一些 ioctl 代码(我继承的,不是写的),它做的第一件事是在继续从用户空间复制数据之前检查 access_ok() 是否: #define __lddk_copy_from_user(a,b,c) copy_from_user(a,b,c)#define __lddk_copy_to_user(a,b,c) copy_to ..
发布时间:2022-01-04 22:48:55 服务器开发

IOCTL Linux 设备驱动程序

谁能给我解释一下, 什么是IOCTL? 它有什么用? 我该如何使用它? 为什么我不能定义与 IOCTL 一样工作的新函数? 解决方案 一个ioctl,意思是“输入-输出控制"是一种特定于设备的系统调用.Linux 中只有少数系统调用(300-400),不足以表达设备可能具有的所有独特功能.因此,驱动程序可以定义一个 ioctl,它允许用户空间应用程序向它发送命令.然而,ioct ..
发布时间:2022-01-04 22:08:50 服务器开发

我怎样才能知道 C 中接口的 IP 地址?

假设我正在运行一个名为 IpAddresses.c 的程序.我希望该程序根据每个接口获取该设备的所有 IP 地址.就像 ifconfig 一样.我该怎么做? 我对 ioctl 了解不多,但我读过它可能对我有帮助. 解决方案 只需使用 getifaddrs().举个例子: #include #include #include #include int主(){结构 ifaddrs *i ..
发布时间:2021-12-31 14:31:26 其他开发

如果 cmd = 2,则不调用 ioctl

我正在开发一个使用 unlocked_ioctl 的内核模块.我使用内核版本 2.6.24-23-generic 对其进行了测试,它运行良好.现在我用内核版本 3.3.1-1-ARCH 进行了尝试,但发生了一些奇怪的事情:当请求值 (cmd) 为 2 时,ioctl 函数不会执行.它返回 0,但该函数没有执行.为了检查它是否未执行,我执行了以下操作: static long midriver_i ..
发布时间:2021-12-29 14:16:08 其他开发

sendto 的最大缓冲区长度?

对于作为 UDP 端口打开的套接字,如何获得可以传递给 sendto(..) 调用的最大字节数? 解决方案 使用getsockopt().该站点 对您可以检索的用法和选项进行了很好的细分. 在 Windows 中,您可以: int optlen = sizeof(int);int optval;getockopt(socket, SOL_SOCKET, SO_MAX_MSG_SIZ ..
发布时间:2021-12-20 10:34:45 服务器开发

“设备的 ioctl 不合适"

我有一个在 AIX 机器中运行的 Perl 脚本. 脚本试图从某个目录打开一个文件,但它无法读取该文件,因为文件没有读取权限,但我收到一个不同的错误,说设备的 ioctl 不合适. 它不应该说没有文件的读取权限或类似的东西吗? 这个不适合设备的ioctl消息是什么意思? 我该如何解决? 编辑:这是我在执行 strace 时发现的. open("/local/logs ..
发布时间:2021-12-10 18:27:09 其他开发

SPI_IOC_MESSAGE(N) 宏让我适合

我无法让我正在处理的 SPI 程序正确运行,而且 SPI_IOC_MESSAGE(N) 宏似乎存在问题. 以下是不起作用的示例代码(ioctl 返回 EINVAL (22) ): std::vectortr;//将传输交给 SPI 驱动程序如果 (tr.size() > 0){int ret = ioctl(fd, SPI_IOC_MESSAGE(tr.size ..
发布时间:2021-11-17 22:18:53 服务器开发

硬盘序列号在 Windows XP、Vista 和 7 中每 2 个字节翻转一次,但在 Windows 8 中没有

我需要获得硬盘序列号才能将其用作许可软件的密钥.我在这个 url 中使用了 diskid32 代码:http://www.winsim.com/diskid32/diskid32.html它使用 DeviceIoControl Win32 API 和 IOCTL_STORAGE_QUERY_PROPERTY 的 IO 控制代码. 它奏效了.然而,当我仔细检查打印在硬盘本身上的实际序列号时,我 ..
发布时间:2021-09-26 18:50:18 其他开发

ws_xpixel 和 ws_ypixel

这是我用来打印当前终端的像素分辨率的代码. #include #include #include int main (int argc, char *argv[]) {struct winsize ww;ioctl(STDOUT_FILENO, TIOCGWINSZ, &ww);printf ("x 像素 %d\n", ww.ws_xpixel);printf ("y 像素 %d\n", ww. ..
发布时间:2021-09-05 20:35:27 服务器开发

无法更改 pty/N 上的终端大小(适用于 ttyN)

我使用 next 更改终端大小: rc = ioctl(fd, TIOCSWINSZ, &ws); 当我在 linux 文本终端(通过 Alt-Ctrl-F1 切换)下运行它时,结果是我希望看到的.ioctl syscall 给出的范围内的整个我的输入和输出. 但是当我通过 SSH 连接到 localhost 并运行相同的程序时,它只能部分工作.我的意思是我不能输入比 ioctl 设置的终端 ..
发布时间:2021-09-05 20:29:52 其他开发

从终端读取屏幕字符

据我研究,terminfo/termcap 和 ioctl 不允许在终端的 (x,y) 位置查询字符屏幕.这是相当出乎意料的,因为: 可以阅读例如终端的屏幕尺寸(例如 tput co、tput li)、 可以从终端读取输入 ——两者表示与终端的通信是双向的.真的没有办法在给定位置查询字符,比如 *inch*, *in_wch* 诅咒函数(仅适用于诅咒窗口)? 解决方案 这是意 ..
发布时间:2021-09-05 20:28:12 其他开发

UDP(数据报)套接字的 FIONREAD 返回什么?

FIONREAD 的ioctl 返回的是下一个数据包的长度,还是缓冲区中所有数据的长度? 假设有一个 UDP 服务器从客户端 1 接收 2 个数据包,并在客户端 1 的数据包之后从客户端 2 接收另外 2 个数据包.那么,FIONREAD的ioctl的值是多少,在这种情况下 readfrom 返回什么? 客户端 1:v 两个数据包 ++UDP 服务器得到 4 个数据包 ..
发布时间:2021-06-07 19:27:25 其他开发

如何在Mac插件中使用ioctl()设置RTS?

我可以在一个小型终端应用程序中使用ioctl来设置RTS,但不能在我的Mac插件代码中进行设置,尽管两者都运行相同的代码.在插件中,我只能“获取"串行端口标志/引脚,而不能“设置"它们.在终端应用程序中,我既可以“获取并“设置"它们,也可以得到ENODEV的错误信息.错误号为19,消息为“设备不支持该操作." 如果这是一个安全问题(在浏览器的上下文中),是否有办法获得使用ioctl修改标志的 ..
发布时间:2021-05-31 18:58:50 C/C++开发

如何从Linux获取Windows大小

每个人.我还是编程新手.我真的需要一些关于我面临的问题的帮助.所以,这里的情况是我试图在终端大小小于80x24时显示警告.作为记录,我的操作系统是Window,但是我使用的是虚拟机来运行Linux,因为所有文件都在Linux中.当我使用终端运行文件时,警告显示正确.但是问题是当我尝试使用PuTTY从Windows运行文件时.该警告未出现.我确定是因为我使用的功能只能读取Linux环境,而不能读取W ..
发布时间:2021-05-29 23:05:03 服务器开发

如何更改默认网关vie C

我正在尝试用C语言编写一个程序,该程序将更改默认网关. 我已运行以下代码: Linux:如何设置默认值从C出发的路线?此处提供的代码无法正常运行.它将在其旁边添加具有高度量标准编号的默认网关.我阅读了有关度量标准的数字,但这显然不是我的目标.我想用我自己的一个交换当前的默认地址. 如果您添加一些代码,由于它是首次使用ioctl,因此在此附近的解释也将不胜感激.不是很熟悉它的工作原理,或 ..
发布时间:2021-05-09 20:39:09 其他开发