Skip to content
Syscall BSD#27

svc · unix #27

recvmsg

Reçoit un message et toutes les données de contrôle auxiliaires dans un tampon scatter-gather.

Prototype

int recvmsg(int s, struct msghdr *msg, int flags);

Retour: int

Arguments

NameTypeDirDescription
sint-
msgstruct msghdr-
flagsint-

Historique des versions

XNU tagmacOS#
xnu-1456.1.26macOS 10.6 Snow Leopard27
xnu-1486.2.1127
xnu-1504.15.327
xnu-1504.3.1227
xnu-1504.7.427
xnu-1504.9.1727
xnu-1504.9.2627
xnu-1504.9.3727

Notes

recvmsg est le seul moyen de recevoir des objets auxiliaires : SCM_RIGHTS (passage de descripteurs sur AF_UNIX), SCM_CREDS (credentials du pair), IP_RECVPKTINFO et la famille NECP_CLIENT_RESULT spécifique à NetworkExtension. Le noyau remplit msghdr.msg_flags avec MSG_TRUNC si l'iov était trop petit et MSG_CTRUNC si l'espace cmsg était épuisé — les appelants doivent vérifier les deux. macOS préserve les frontières de message pour SOCK_DGRAM et SOCK_SEQPACKET.

Détection

Aucune couverture ES. Le passage de fd auxiliaire est observable via des instantanés PROC_PIDFDSOCKETINFO avant et après l'appel. NEFilterDataProvider voit les octets de payload mais pas les cmsg.

API associées

recvfromrecvmsg_xsendmsgsendmsg_xsocketpair