
  [;1m-spec port_info(Port) -> Result[0m
  [;1m                   when[0m
  [;1m                       Port :: port() | atom(),[0m
  [;1m                       ResultItem ::[0m
  [;1m                           {registered_name, RegisteredName :: atom()} |[0m
  [;1m                           {id, Index :: non_neg_integer()} |[0m
  [;1m                           {connected, Pid :: pid()} |[0m
  [;1m                           {links, Pids :: [pid()]} |[0m
  [;1m                           {name, String :: string()} |[0m
  [;1m                           {input, Bytes :: non_neg_integer()} |[0m
  [;1m                           {output, Bytes :: non_neg_integer()} |[0m
  [;1m                           {os_pid,[0m
  [;1m                            OsPid :: non_neg_integer() | undefined},[0m
  [;1m                       Result :: [ResultItem] | undefined.[0m

  Returns a list containing tuples with information about [;;4mPort[0m, or [;;4m[0m
  [;;4mundefined[0m if the port is not open.

  The order of the tuples is undefined, and all the tuples are not
  mandatory. If the port is closed and the calling process was
  previously linked to the port, the exit signal from the port is
  guaranteed to be delivered before [;;4mport_info/1[0m returns [;;4mundefined[0m.

  The result contains information about the following [;;4mItem[0ms:

   • [;;4mregistered_name[0m (if the port has a registered name)

   • [;;4mid[0m

   • [;;4mconnected[0m

   • [;;4mlinks[0m

   • [;;4mname[0m

   • [;;4minput[0m

   • [;;4moutput[0m

  For more information about the different [;;4mItem[0ms, see [;;4mport_info/2[0m.

  Failure: [;;4mbadarg[0m if [;;4mPort[0m is not a local port identifier, or an
  atom.
