[英]How can I get my hostname within a function?
unix hostname
程序為我提供了一種非常簡單的方式來獲取“真實的”主機名(而不是localhost。例如,對於我來說,當前unknown74e5[...]df7.att.net
)是unknown74e5[...]df7.att.net
)。 但是,如何使用C系統調用在自己的代碼中執行此操作? 我想獲取一個char *
,其中包含此字符串,以便可以將其傳遞給gethostbyname
和類似名稱。
在討論的同時,我還想知道如何通過UNIX系統調用來獲取IP地址,而不是依賴程序(或更糟糕的是,whatismyip.com)...
謝謝!
gethostname(2)
是POSIX強制的C庫函數,為hostname
程序提供動力:
int gethostname(char *name, size_t len);
您可以使用uname(2)
來獲得一個充滿信息的struct utsname
。 您對nodename
感興趣
struct utsname {
char sysname[]; /* Operating system name (e.g., "Linux") */
char nodename[]; /* Name within "some implementation-defined network". */
POSIX還提到了uname
函數和utsname
結構,並且幾乎在所有平台上都可用。 正如Thomas在評論中提到的那樣,glibc將gethostname
實現為對uname(2)
的調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.