gethostname() - Unix、Linux 系统调用
Tutorials Point


  Unix 初学者指南
  Unix Shell 编程
  高级 Unix
  Unix 有用参考
  Unix 有用资源
  精选阅读

版权所有 © 2014 tutorialspoint



  首页     参考     讨论论坛     关于 TP  

gethostname() - Unix、Linux 系统调用


previous next AddThis Social Bookmark Button

广告

名称

gethostname、sethostname - 获取/设置主机名

语法

#include <unistd.h>

int gethostname(char *name, size_t len);
int sethostname(const char *name, size_t len);

描述

这些系统调用用于访问或更改当前处理器的主机名。gethostname() 系统调用在长度为 len 字节的数组 name 中返回一个以 null 结尾的主机名(之前由 sethostname() 设置)。如果以 null 结尾的主机名不适合,则不会返回错误,但主机名会被截断。截断的主机名是否以 null 结尾是不确定的。

返回值

成功时,返回零。发生错误时,返回 -1,并且 errno 被相应地设置。

错误

标签描述
EFAULT name 是一个无效的地址。
EINVAL len 为负,或者对于 sethostname(),len 大于最大允许的大小,或者对于 Linux/i386 上的 gethostname(),len 小于实际大小。(在最后一种情况下,glibc 2.1 使用 ENAMETOOLONG。)
EPERM 对于 sethostname(),调用者没有 CAP_SYS_ADMIN 权限。

符合标准

SVr4、4.4BSD(此接口首次出现在 4.2BSD 中)。POSIX.1-2001 指定了 gethostname() 但没有指定 sethostname()。

注释

SUSv2 保证“主机名限制为 255 个字节”。POSIX.1-2001 保证“主机名(不包括终止的 null 字节)限制为 HOST_NAME_MAX 个字节”。

GLIBC 注释

GNU C 库将 gethostname() 实现为一个库函数,该函数调用 uname(2) 并将返回的 nodename 字段中的最多 len 个字节复制到 name 中。执行复制后,函数检查 nodename 的长度是否大于或等于 len,如果大于或等于,则函数返回 -1 并且 errno 设置为 ENAMETOOLONG。glibc 2.2 之前的版本以不同的方式处理 nodename 的长度大于或等于 len 的情况:不会将任何内容复制到 name 中,并且函数返回 -1 并且 errno 设置为 ENAMETOOLONG

参见



previous next Printer Friendly

广告


  

广告



广告