# PR_Read Reads bytes from a file or socket. ## Syntax ```{code} #include PRInt32 PR_Read(PRFileDesc *fd, void *buf, PRInt32 amount); ``` ### Parameters The function has the following parameters: `fd` : A pointer to a {ref}`PRFileDesc` object for the file or socket. `buf` : A pointer to a buffer to hold the data read in. On output, the buffer contains the data. `amount` : The size of `buf` (in bytes). ### Returns One of the following values: - A positive number indicates the number of bytes actually read in. - The value 0 means end of file is reached or the network connection is closed. - The value -1 indicates a failure. To get the reason for the failure, call {ref}`PR_GetError`. ## Description The thread invoking {ref}`PR_Read` blocks until it encounters an end-of-stream indication, some positive number of bytes (but no more than `amount` bytes) are read in, or an error occurs.