C 读/写NETLINK套接字是否会失败?

C 读/写NETLINK套接字是否会失败?,c,linux,sockets,C,Linux,Sockets,我假设可能会发生内核死机或类似灾难性事件,但NETLINK套接字上的发送或接收是否可能出错?鉴于AF\u NETLINK套接字的目的是与内核通信,理论上send调用当然可能失败,因为内核将检查传递给它的数据,可以判断所说的数据是无意义的,并拒绝发送(有任何它喜欢的错误) 更实际地说,由于提供了数据指针,因此可以提供无效指针(与任何send或recv调用一样),并立即得到EFAULT错误 如果recv缓冲区有效且足够大,recv通常不会失败(类似EINTR的情况除外) 我想你可以用更具体的代码得到

我假设可能会发生内核死机或类似灾难性事件,但NETLINK套接字上的发送或接收是否可能出错?

鉴于
AF\u NETLINK
套接字的目的是与内核通信,理论上
send
调用当然可能失败,因为内核将检查传递给它的数据,可以判断所说的数据是无意义的,并拒绝
发送
(有任何它喜欢的错误)

更实际地说,由于提供了数据指针,因此可以提供无效指针(与任何
send
recv
调用一样),并立即得到
EFAULT
错误

如果
recv
缓冲区有效且足够大,
recv
通常不会失败(类似
EINTR
的情况除外)


我想你可以用更具体的代码得到更具体的答案。

通常,系统调用会进行广泛的检查。如果发送netlink消息导致内核死机,这是一个严重的错误,至少是本地拒绝服务,可能是一个安全漏洞。