Jump to content United States-English
HP.com Home Products and Services Support and Drivers Solutions How to Buy
» Contact HP
More options
HP.com home
HP-UX Reference > U


HP-UX 11i Version 3: February 2007

Technical documentation

» Feedback
Content starts here

 » Table of Contents

 » Index


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


#include <sys/utsname.h>

int uname(struct utsname *name);

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



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 B.11.23.

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:


Two-user system


16-user system


32-user system


64-user system


8-user system


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

The machine field contains the hardware and model identifiers of the computer system. On Itanium®-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.


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.


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


Successful completion. n is a nonnegative value.


Failure. errno is set to indicate the error.

The uname() function may return truncated results when the non-expanded version of the utsname structure is used. See WARNINGS.


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


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


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


This error may be detected and indicates that the utsname structure version used does not accommodate the full values of one or more fields.


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

  • HP-UX compatible version (compatible with all HP-UX versions)

  • Expanded version of the structure which can accommodate larger values.

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 (plus null) in the utsname.nodename field. In a future release the field will not contain any data bytes if the entire node name cannot fit.

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 behavior or failure in applications which use the uname command or the uname() system function to access the name.

It is recommended that, whenever possible, programs use the host name as returned by the gethostname() function rather than the utsname.nodename field. It can be given a sufficiently large buffer to avoid truncation issues. See gethostname(2) for more information.


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


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

Printable version
Privacy statement Using this site means you accept its terms Feedback to webmaster
© 1983-2007 Hewlett-Packard Development Company, L.P.