Provided by: erlang-manpages_20.2.2+dfsg-1ubuntu2_all bug

NAME

       os - Operating system-specific functions.

DESCRIPTION

       The  functions  in  this  module  are  operating  system-specific.  Careless  use of these
       functions results in programs that will only run on a  specific  platform.  On  the  other
       hand,  with  careful  use,  these functions can be of help in enabling a program to run on
       most platforms.

EXPORTS

       cmd(Command) -> string()

              Types:

                 Command = atom() | io_lib:chars()

              Executes Command in a command shell of the target OS, captures the standard  output
              of the command, and returns this result as a string. This function is a replacement
              of the previous function unix:cmd/1; they are equivalent on a Unix platform.

              Examples:

              LsOut = os:cmd("ls"), % on unix platform
              DirOut = os:cmd("dir"), % on Win32 platform

              Notice that in some cases, standard output of a command when  called  from  another
              program  (for  example,  os:cmd/1) can differ, compared with the standard output of
              the command when called directly from an OS command shell.

       find_executable(Name) -> Filename | false

       find_executable(Name, Path) -> Filename | false

              Types:

                 Name = Path = Filename = string()

              These two functions look up an executable program, with the specified  name  and  a
              search  path,  in  the  same  way  as the underlying OS. find_executable/1 uses the
              current execution path  (that  is,  the  environment  variable  PATH  on  Unix  and
              Windows).

              Path,  if  specified,  is  to  conform  to the syntax of execution paths on the OS.
              Returns the absolute filename of the executable  program  Name,  or  false  if  the
              program is not found.

       getenv() -> [string()]

              Returns a list of all environment variables. Each environment variable is expressed
              as a single string on the format "VarName=Value", where VarName is the name of  the
              variable and Value its value.

              If  Unicode  filename  encoding is in effect (see the erl manual page), the strings
              can contain characters with codepoints > 255.

       getenv(VarName) -> Value | false

              Types:

                 VarName = Value = string()

              Returns the Value of the environment variable VarName, or false if the  environment
              variable is undefined.

              If  Unicode  filename  encoding is in effect (see the erl manual page), the strings
              VarName and Value can contain characters with codepoints > 255.

       getenv(VarName, DefaultValue) -> Value

              Types:

                 VarName = DefaultValue = Value = string()

              Returns the Value of the environment  variable  VarName,  or  DefaultValue  if  the
              environment variable is undefined.

              If  Unicode  filename  encoding is in effect (see the erl manual page), the strings
              VarName and Value can contain characters with codepoints > 255.

       getpid() -> Value

              Types:

                 Value = string()

              Returns the process identifier of the current Erlang emulator in  the  format  most
              commonly  used  by  the  OS  environment.  Returns Value as a string containing the
              (usually) numerical identifier for a process. On Unix, this is typically the return
              value  of  the  getpid() system call. On Windows, the process id as returned by the
              GetCurrentProcessId() system call is used.

       putenv(VarName, Value) -> true

              Types:

                 VarName = Value = string()

              Sets a new Value for environment variable VarName.

              If Unicode filename encoding is in effect (see the erl manual  page),  the  strings
              VarName and Value can contain characters with codepoints > 255.

              On  Unix platforms, the environment is set using UTF-8 encoding if Unicode filename
              translation is in effect. On Windows, the environment is set using  wide  character
              interfaces.

       set_signal(Signal, Option) -> ok

              Types:

                 Signal =
                     sighup |
                     sigquit |
                     sigabrt |
                     sigalrm |
                     sigterm |
                     sigusr1 |
                     sigusr2 |
                     sigchld |
                     sigstop |
                     sigtstp
                 Option = default | handle | ignore

              Enables or disables OS signals.

              Each signal my be set to one of the following options:

                ignore:
                   This signal will be ignored.

                default:
                   This signal will use the default signal handler for the operating system.

                handle:
                   This  signal  will  notify erl_signal_server when it is received by the Erlang
                  runtime system.

       system_time() -> integer()

              Returns the current OS system time in native time unit.

          Note:
              This time is not a monotonically increasing time.

       system_time(Unit) -> integer()

              Types:

                 Unit = erlang:time_unit()

              Returns the current OS system time converted into the Unit passed as argument.

              Calling          os:system_time(Unit)          is           equivalent           to
              erlang:convert_time_unit(os:system_time(), native, Unit).

          Note:
              This time is not a monotonically increasing time.

       timestamp() -> Timestamp

              Types:

                 Timestamp = erlang:timestamp()
                   Timestamp = {MegaSecs, Secs, MicroSecs}

              Returns  the  current  OS system time in the same format as erlang:timestamp/0. The
              tuple can  be  used  together  with  function  calendar:now_to_universal_time/1  or
              calendar:now_to_local_time/1  to  get  calendar  time.  Using  the  calendar  time,
              together with the MicroSecs part of the return tuple from this function, allows you
              to  log  time stamps in high resolution and consistent with the time in the rest of
              the OS.

              Example of code formatting a string in format "DD Mon YYYY HH:MM:SS.mmmmmm",  where
              DD  is  the day of month, Mon is the textual month name, YYYY is the year, HH:MM:SS
              is the time, and mmmmmm is the microseconds in six positions:

              -module(print_time).
              -export([format_utc_timestamp/0]).
              format_utc_timestamp() ->
                  TS = {_,_,Micro} = os:timestamp(),
                  {{Year,Month,Day},{Hour,Minute,Second}} =
              calendar:now_to_universal_time(TS),
                  Mstr = element(Month,{"Jan","Feb","Mar","Apr","May","Jun","Jul",
                  "Aug","Sep","Oct","Nov","Dec"}),
                  io_lib:format("~2w ~s ~4w ~2w:~2..0w:~2..0w.~6..0w",
                  [Day,Mstr,Year,Hour,Minute,Second,Micro]).

              This module can be used as follows:

              1> io:format("~s~n",[print_time:format_utc_timestamp()]).
              29 Apr 2009  9:55:30.051711

              OS system time can also be retreived by system_time/0 and system_time/1.

       perf_counter() -> Counter

              Types:

                 Counter = integer()

              Returns the current performance counter value in perf_counter time unit. This is  a
              highly optimized call that might not be traceable.

       perf_counter(Unit) -> integer()

              Types:

                 Unit = erlang:time_unit()

              Returns  a  performance counter that can be used as a very fast and high resolution
              timestamp. This counter is read directly from the hardware or operating system with
              the  same guarantees. This means that two consecutive calls to the function are not
              guaranteed to be monotonic, though it most likely will be. The performance  counter
              will be converted to the resolution passed as an argument.

              1> T1 = os:perf_counter(1000),receive after 10000 -> ok end,T2 = os:perf_counter(1000).
              176525861
              2> T2 - T1.
              10004

       type() -> {Osfamily, Osname}

              Types:

                 Osfamily = unix | win32
                 Osname = atom()

              Returns the Osfamily and, in some cases, the Osname of the current OS.

              On  Unix,  Osname  has  the  same value as uname -s returns, but in lower case. For
              example, on Solaris 1 and 2, it is sunos.

              On Windows, Osname is nt.

          Note:
              Think twice before using this function. Use module filename if you want to  inspect
              or build filenames in a portable way. Avoid matching on atom Osname.

       unsetenv(VarName) -> true

              Types:

                 VarName = string()

              Deletes the environment variable VarName.

              If  Unicode  filename  encoding  is in effect (see the erl manual page), the string
              VarName can contain characters with codepoints > 255.

       version() -> VersionString | {Major, Minor, Release}

              Types:

                 VersionString = string()
                 Major = Minor = Release = integer() >= 0

              Returns the OS version. On most systems, this  function  returns  a  tuple,  but  a
              string  is  returned instead if the system has versions that cannot be expressed as
              three numbers.

          Note:
              Think twice before using this function. If you still need to use  it,  always  call
              os:type() first.