
  -spec port_command(Port, Data, OptionList) -> boolean()
                        when
                            Port :: port() | atom(),
                            Data :: iodata(),
                            Option :: force | nosuspend,
                            OptionList :: [Option].

  Sends data to a port. port_command(Port, Data, []) equals 
  port_command(Port, Data).

  If the port command is aborted, false is returned, otherwise 
  true.

  If the port is busy, the calling process is suspended until the
  port is not busy anymore.

  Options:

  force:
    The calling process is not suspended if the port is busy,
    instead the port command is forced through. The call fails
    with a notsup exception if the driver of the port does not
    support this. For more information, see driver flag 
    ERL_DRV_FLAG_SOFT_BUSY.

  nosuspend:
    The calling process is not suspended if the port is busy,
    instead the port command is aborted and false is returned.

  Note:
    More options can be added in a future release.

  Failures:

  badarg:
    If Port is not an identifier of an open port, or the
    registered name of an open port. If the calling process was
    previously linked to the closed port, identified by Port,
    the exit signal from the port is guaranteed to be delivered
    before this badarg exception occurs.

  badarg:
    If Data is an invalid I/O list.

  badarg:
    If OptionList is an invalid option list.

  notsup:
    If option force has been passed, but the driver of the port
    does not allow forcing through a busy port.

  Warning:
    Do not send data to an unknown port. Any undefined behavior is
    possible (including node crash) depending on how the port
    driver interprets the data.
