코어 라이브러리에는 특정 네트워크 인터페이스에 할당 된 IP 주소를 반환하는 Linux_ext.get_ipv4_address_for_interface
기능이 있습니다. ifconfig
또는 ip addr show
의 내용을 읽으려면 fork
을 수행하지 않고 표준 라이브러리 만 사용하여 동일한 작업을 수행 할 수있는 간단한 방법이 있습니까?OCaml의 특정 인터페이스에 대한 IP 주소 얻기
1
A
답변
2
OCaml 추상 기계는 네트워크 인터페이스의 개념을 포함하지 않으므로 OS 고유의 인터페이스에 의존하지 않고 OCaml 표준 라이브러리의 이식 가능한 부분으로 이러한 동작을 구현할 수 없습니다.
실제로 C에서는 불가능합니다. 인터페이스가 커널과 관련되어 있으므로 이러한 함수를 작성하려면 각 Unix 시스템에 대해 별도의 구현을 작성해야합니다. 대상을 계획하고 있습니다. For example, C에서는 ioctl
인터페이스를 사용해야하며 Linux 커널 관련 작업을 사용해야합니다.
좋은 소식은 OCaml을 사용하여 계속 할 수 있다는 것입니다. OCaml은 ioctl
함수를 제공하지 않지만, C Types 외국 함수 인터페이스 나 writing a stub function을 통해 직접 호출 할 수 있습니다.
+0
미안하지만, Pervasive 대신에 표준 라이브러리의 모든 모듈을 의미했습니다. : 외부 라이브러리가 없습니다. 내 질문을 편집합니다. 답변 주셔서 감사합니다. –
(기본 OCaml 언어에는 이런 종류의 저급 네트워크 API가 내장되어 있지 않습니다.) –