Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
UNAME(2)		   Linux Programmer's Manual		      UNAME(2)

NAME
       uname - get name	and information	about current kernel

SYNOPSIS
       #include	<sys/utsname.h>

       int uname(struct	utsname	*buf);

DESCRIPTION
       uname  returns  system  information in the structure pointed to by buf.
       The utsname struct is defined in	_sys/utsname.h_:
	      struct utsname {
		      char sysname[];
		      char nodename[];
		      char release[];
		      char version[];
		      char machine[];
	      #ifdef _GNU_SOURCE
		      char domainname[];
	      #endif
	      };
       The length of the arrays	in a struct utsname is unspecified; the	fields
       are NUL-terminated.

RETURN VALUE
       On  success,  zero is returned.	On error, -1 is	returned, and errno is
       set appropriately.

ERRORS
       EFAULT buf is not valid.

CONFORMING TO
       SVr4, SVID, POSIX, X/OPEN.  There is no uname call in BSD 4.3.

       The domainname member (the NIS or YP domain name) is a GNU extension.

NOTES
       This is a system	call, and the operating	system	presumably  knows  its
       name, release and version. It also knows	what hardware it runs on.  So,
       four of the fields of the struct	are meaningful.	 On  the  other	 hand,
       the field nodename is meaningless: it gives the name of the present ma-
       chine in	some undefined network,	but typically  machines	 are  in  more
       than  one  network  and have several names. Moreover, the kernel	has no
       way of knowing about such things, so it has to be told what  to	answer
       here.  The same holds for the additional	domainname field.

       To  this	 end Linux uses	the system calls sethostname(2)	and setdomain-
       name(2).	 Note that there is no standard	that says  that	 the  hostname
       set  by	sethostname(2) is the same string as the nodename field	of the
       struct returned by uname	(indeed, some systems allow a  256-byte	 host-
       name and	an 8-byte nodename), but this is true on Linux.	The same holds
       for setdomainname(2) and	the domainname field.

       The length of the fields	in the struct varies. Some  operating  systems
       or  libraries  use  a hardcoded 9 or 33 or 65 or	257. Other systems use
       SYS_NMLN	or _SYS_NMLN or	UTSLEN or _UTSNAME_LENGTH. Clearly,  it	 is  a
       bad  idea  to use any of	these constants	- just use sizeof(...).	 Often
       257 is chosen in	order to have room for an internet hostname.

       There have been three Linux system calls	uname(). The  first  one  used
       length  9,  the second one used 65, the third one also uses 65 but adds
       the domainname field.

       Part of the utsname information is also accessible via sysctl  and  via
       /proc/sys/kernel/{ostype, hostname, osrelease, version, domainname}.

SEE ALSO
       uname(1), getdomainname(2), gethostname(2)

Linux 2.5.0			  2001-12-15			      UNAME(2)

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | ERRORS | CONFORMING TO | NOTES | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=uname&sektion=2&manpath=Red+Hat+9>

home | help