uname() — Display current operating system name

Standards

Standards / Extensions C or C++ Dependencies

POSIX.1
XPG4
XPG4.2
Single UNIX Specification, Version 3

both  

Format

#define _POSIX_SOURCE
#include <sys/utsname.h>

int uname(struct utsname *name);

General description

The uname() function retrieves information identifying the operating system you are running on. The argument name points to a memory area where a structure describing the operating system the process is running on can be stored.

The information about the operating system is returned in a utsname structure, which has the following elements:
char *sysname;
The name of the implementation of the operating system.
char *nodename;
The node name of this particular machine. The node name is set by the SYSNAME sysparm (specified at IPL), and usually differentiates machines running at a single location.
char *release;
The current release level of the implementation.
char *version;
The current version level of the release.
char *machine;
The name of the hardware type the system is running on.

Each of the utsname structure elements is a normal C string, terminated with a NULL character.

As of OS/390® Release 2, the uname() function will return "OS/390" as the sysname value, even if the true name of the operating system is different. This is for compatibility purposes. The version value will increase at every new version of the operating system. The release value will increase at every new release of the operating system.

Table 1 lists the operating system names and corresponding values returned by the uname() function. To retrieve the true operating system name, version, and release, use the __osname() function.

Table 1. Operating system information returned by the uname() function
Operating system Sysname Release Version
z/OS® V2.1 OS/390 24.00 04
z/OS V1.13 OS/390 23.00 03
z/OS V1.12 OS/390 22.00 03
z/OS V1.11 OS/390 21.00 03
z/OS V1.10 OS/390 20.00 03
z/OS V1.9 OS/390 19.00 03
z/OS V1.8 OS/390 18.00 03
z/OS V1.7 OS/390 17.00 03
z/OS V1.6 OS/390 16.00 03
z/OS V1.5 OS/390 15.00 03
z/OS V1.4 OS/390 14.00 03
z/OS V1.3 OS/390 13.00 03
z/OS V1.2 OS/390 12.00 03
z/OS V1.1 OS/390 11.00 03
OS/390 V2.10 OS/390 10.00 02
OS/390 V2.9 OS/390 09.00 02
OS/390 V2.8 OS/390 08.00 02
OS/390 V2.7 OS/390 07.00 02
OS/390 V2.6 OS/390 06.00 02
OS/390 V2.5 OS/390 05.00 02
OS/390 V2.4 OS/390 04.00 02
OS/390 V1.3 OS/390 03.00 01
OS/390 V1.2 OS/390 02.00 01
OS/390 V1.1 MVS 100 1
  MVS 2.2 5

Returned value

If successful, the uname() function returns a nonnegative value.

If unsuccessful, the uname() function returns -1. An errno might be set to indicate the reason for the failure, but no errno values are specified by the POSIX.1 standard.

Example

CELEBU03
⁄* CELEBU03

   This example gets information about the system you are running on.

 *⁄
#define _POSIX_SOURCE
#include <sys⁄utsname.h>
#include <stdio.h>

main() {
  struct utsname uts;

  if (uname(&uts) < 0)
    perror("uname() error");
  else {
    printf("Sysname:  %s\n", uts.sysname);
    printf("Nodename: %s\n", uts.nodename);
    printf("Release:  %s\n", uts.release);
    printf("Version:  %s\n", uts.version);
    printf("Machine:  %s\n", uts.machine);
  }
}
Output
Sysname:  OS/390
Nodename: SY1
Release:  24.00
Version:  04
Machine:  2097

Related information