# PR_Write Writes a buffer of data to a file or socket. ## Syntax ```{code} #include PRInt32 PR_Write( PRFileDesc *fd, const void *buf, PRInt32 amount); ``` ### Parameters The function has the following parameters: `fd` : A pointer to the {ref}`PRFileDesc` object for a file or socket. `buf` : A pointer to the buffer holding the data to be written. `amount` : The amount of data, in bytes, to be written from the buffer. ### Returns One of the following values: - A positive number indicates the number of bytes successfully written. - The value -1 indicates that the operation failed. The reason for the failure is obtained by calling {ref}`PR_GetError`. ## Description The thread invoking {ref}`PR_Write` blocks until all the data is written or the write operation fails. Therefore, the return value is equal to either `amount` (success) or -1 (failure). Note that if {ref}`PR_Write` returns -1, some data (less than `amount` bytes) may have been written before an error occurred.