HPlogo HP-UX Reference > U

uname(2)

HP-UX 11i Version 2: December 2007 Update
» 

Technical documentation

 » Table of Contents

 » Index

NAME

uname(), setuname() — get information about computer system; set node name (system name)

SYNOPSIS

#include <sys/utsname.h>

int uname(struct utsname *name);

int setuname(const char *name, size_t namelen);

DESCRIPTION

uname()

The uname() system call places information identifying the computer system in the utsname structure pointed to by name.

The utsname structure, defined in <sys/utsname.h>, is set up as follows:

char sysname[]; char nodename[]; char release[]; char version[]; char machine[]; char idnumber[];

Each field is a null-terminated string.

The sysname field contains the name of the operating system, HP-UX on standard HP-UX systems.

The nodename field contains the name by which the computer system is known in a communications network.

The release field contains the release identifier of the operating system, such as A.09.01.

The version field contains additional information about the operating system. This value can change in future releases. The first character of the version field identifies the license level:

A

Two-user system

B

16-user system

C

32-user system

D

64-user system

E

8-user system

U

128-user, 256-user, or unlimited-user system

The machine field contains the hardware and model identifiers of the computer system. On Itanium(R)-based systems, this field always returns ia64.

The idnumber field contains a unique identification number within that class of hardware, possibly a hardware or software serial number. This field contains a null string if there is no identification number. On Itanium-based systems this number may not be unique. To get a unique id, use the _CS_MACHINE_IDENT option of confstr(3C).

setuname()

The setuname() system call sets the node name (system name), as returned in the nodename field of the utsname structure, to name, which has a length of namelen characters. This is usually executed by /sbin/init.d/hostname at system boot time. Names are limited to UTSLEN - 1 characters; UTSLEN is defined in <sys/utsname.h>.

Security Restrictions

The actions associated with this system call require the PRIV_SYSATTR privilege (SYSATTR). Processes owned by the superuser have this privilege. Processes owned by other users may have this privilege, depending on system configuration. See privileges(5) for more information about privileged access on systems that support fine-grained privileges.

RETURN VALUE

uname() and setuname() return the following values:

n

Successful completion. n is a nonnegative value.

-1

Failure. errno is set to indicate the error.

ERRORS

If uname() or setuname() fails, errno is set to one of the following values.

EFAULT

name points to an illegal address. The reliable detection of this error is implementation dependent.

EPERM

setuname() was attempted by a process lacking appropriate privileges.

WARNINGS

uname() returns one of two versions of the utsname structure.

  • HP-UX compatible version (compatible with all OS versions and updates).

  • Expanded version of the structure, which provides room to accommodate larger node names.

The compatible structure is used by default. To use the expanded structure, see nodehostnamesize(5).

If the administrator has configured a node name with a length larger than 8 bytes, the compatible version of the utsname structure, as returned by uname(), contains just the first 8 bytes in the utsname.nodename field. No other fields in the utsname structure are truncated in this manner.

Setting a node name of more than 8 bytes with setuname() is only possible with the appropriate configuration options enabled. It is strongly recommended that all related documentation be completely understood before setting a larger node name. A node name larger than 8 bytes can cause anomalous or incorrect behavior in applications which use the uname command or the uname() system function to access the names.

It is recommended that, whenever possible, programs use the host name as returned by the gethostname() interface rather than the utsname nodename field. This avoids any issues with respect to the expanded version of the utsname structure; it will be unnecessary to use it. See gethostname(2) for more information.

AUTHOR

uname() was developed by AT&T and HP.

STANDARDS CONFORMANCE

uname(): AES, SVID2, SVID3, XPG2, XPG3, XPG4, FIPS 151-2, POSIX.1