来自APUE
#include <sys/utsname.h> int uname(struct utsname *name);
其中
struct utsname { char sysname[]; /* name of the operating system */ char nodename[]; /* name of this node */ char release[]; /* current release of operating system */ char version[]; /* current version of this release */ char machine[]; /* name of hardware type */ };
此功能来自System V,在较早的日子,
nodename
元素足以在UUCP网络上引用主机。
和
BSD派生的系统提供了gethostname函数以返回 仅主机名。 如果主机已连接到 TCP / IP网络,主机名通常是完全限定的域 主机名。
#include <unistd.h> int gethostname(char *name, int namelen);
我想知道utsname
的字段nodename
与name
的{{1}}指向的输出字符串之间有什么区别?
谢谢。
答案 0 :(得分:1)
自从您标记了此linux以来,我想我们正在专门讨论Linux。
Linux手册页项目的man 2 gethostname说:
GNU C库不使用gethostname()系统调用; 而是将gethostname()作为调用的库函数来实现 uname(2)并从返回的nodename字段中复制最多len个字节 成名。
因此,在Linux上,两者都是由同一系统调用提供的,并且没有区别。