获取 OCaml 中特定接口的 IP 地址

Get IP Address for a specific interface in OCaml

在核心库中有 Linux_ext.get_ipv4_address_for_interface 函数,它 returns 分配给特定网络接口的 IP 地址。有没有一种简单的方法可以仅使用标准库而不执行 fork 来读取 ifconfigip addr show 的内容?

OCaml 抽象机不包含网络接口的概念,因此在不依赖 OS 特定接口的情况下,无法使用 OCaml 标准库的可移植部分实现此类行为.

事实上,在 C 中甚至是不可能的。由于接口是特定于内核的,因此为了编写这样的函数,您需要为每个 Unix 系统编写一个单独的实现,您打算针对. For example,在 C 中您将需要使用 ioctl 接口,并使用 Linux 内核特定操作。

好消息是您仍然可以使用 OCaml 来完成。尽管 OCaml 不提供 ioctl 函数,您仍然可以通过 C Types foreign function interface or, directly, by writing a stub function.

调用它