# Method Stdio.Fd()->write()

Method write

  ``int` write(`string` `data`)`
  ``int` write(`string` `format`, `mixed` ... `extras`)`
  ``int` write(`array`(`string`) `data`)`
  ``int` write(`array`(`string`) `format`, `mixed` ... `extras`)`

Description

  Write data to a file or a stream.

  If there are any file descriptors that have been queued for sending (with send_fd()), they will be sent.

Parameter `data`

  Data to write.

  If `data` is an array of strings, they are written in sequence.

Parameter `format`
Parameter `extras`

  If more than one argument is given, sprintf() is used to format them using `format`. If `format` is an array, the strings in it are concatenated and the result is used as format string.

Returns

  Writes `data` and returns the number of bytes that were actually written.

  ``(1..)``

  The number of bytes successfully written to the OS buffers.

  This can be less than the size of the given data if eg:

  - Some data was written successfully and then something went wrong.

    If only some data was written due to an error and that error persists, then a later call to write() will fail and return `-1`.

  - Nonblocking mode is used and not all data could be written without blocking.

  ``0``

  No bytes were written. This may be due to

  - `data` or the formatted data being the empty string.

  - Nonblocking mode is used and no data could be written without blocking.

  ``-1`` | Something went wrong and no bytes were written.

  If everything went fine, a call to errno() directly afterwards returns zero.

Note

  Writing of wide strings is not supported. You have to encode the data somehow, e.g. with string_to_utf8 or with one of the charsets supported by Charset.encoder.

See also

  read(), write_oob(), send_fd()