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

廣告


  

廣告



廣告