recv
====
:title: Shellcode Compiler Runtime

---------------------------------------------
ssize_t recv(int fd, void* buf, size_t n, int flags);
---------------------------------------------

Reads `n` bytes from the socket `fd`, and places the result in `buf`.  Returns the number of bytes read, or
the negation of the error code on error.  It is possible for the number of bytes read to be smaller than the number
of bytes requested.

IMPORTANT: If the system call is interrupted, this function will return `-EINTR`.  This differs from most C runtimes,
where `-1` is returned with `errno` set to `EINTR`.  As this runtime does not have `errno`, callers should check
for `-EINTR` and a result less than zero in the error checking code.

See also
--------
link:recv_all.html[recv_all],
link:recvfrom.html[recvfrom],
link:send.html[send],
link:send_all.html[send_all],
link:send_string.html[send_string],
link:sendto.html[sendto]
