在dotnet(C#)中使用Netlink连接器?

时间:2018-12-06 08:32:57

标签: c# .net-core

我正在编写一个dotnet核心应用程序,并希望使用linux netlink connector提供的功能来监听进程派生事件。

我不太确定是否可以用dotnet编写,因为这是C语言中的Linux内核代码。我应该使用pinvoke调用C代码吗?事件将如何发送回我的C#处理程序?

1 个答案:

答案 0 :(得分:0)

看起来您无法使用dotnet创建netlink连接器套接字。 System.Net.Sockets不支持基础协议族和地址族,并且尝试将类型转换为int的枚举都不起作用,因为套接字构造函数会抛出不受支持的地址族错误。

基本上,这可行

#include <linux/connector.h>
#include <linux/netlink.h>
#include <sys/socket.h>

int main() {
    int sock = socket(16, SOCK_DGRAM, 11);
    return 0;
}

但这失败

const UInt16 NETLINK_CONNECTOR = 11;
const UInt16 PF_NETLINK = 16;
Socket temp = new Socket((AddressFamily)PF_NETLINK, SocketType.Dgram, (ProtocolType)NETLINK_CONNECTOR);

投掷

  

未处理的异常:System.Net.Sockets.SocketException:地址   协议不支持的家庭

这是跟踪该功能的corefx存储库上的github问题-https://github.com/dotnet/corefx/issues/34015

相关问题