2011-03-04 213 views
1

有誰知道一個函數來獲取Linux服務器的主機名?我真的不想包含任何頭文件或編譯其他庫,希望默認內置函數。我是新來的c :)linux c - 獲取服務器主機名?

+1

C中沒有內建函數,您將不得不包含頭文件和/或鏈接庫。你在談論在你的機器上運行的服務器嗎? – 2011-03-04 06:44:24

回答

14

like gethostname()

這就是您的應用運行的機器的名稱。

或讀取

/proc/sys/kernel/hostname 

更新

簡單的例子

#include <stdio.h> 
#include <stdlib.h> 
#include <unistd.h> 

int main(void) { 

    char hostname[1024]; 
    gethostname(hostname, 1024); 

    puts(hostname); 

    return EXIT_SUCCESS; 
} 
+0

你能提供一個如何在屏幕上打印它的例子嗎?不要笑,但我已經嘗試了以下,它錯誤了:) int gethostname(char * name,size_t len); printf(「%s \ n」,name); – Joe 2011-03-04 06:49:10

+0

,幫助,謝謝! – Joe 2011-03-04 07:00:50

+1

#include Shaowu 2016-09-16 19:40:09

0

一些有用的信息環境變量中找到。您將需要包括(不幸)stdlib.h,您將獲得由阿蘭Pannetier答案some useful functions

+1

爲什麼這是不幸的?在C中包含頭文件是強制性的。我是否混淆了說這是一件壞事的備忘錄? – 2011-03-04 06:50:48

+1

因爲喬不想包含任何庫! C中的 – CygnusX1 2011-03-04 06:51:17

+0

,那是不可能的。 – 2011-03-04 07:01:22

0

大廈,您可以通過使用HOST_NAME_MAX業餘時間幾個字節:

包括

... 字符主機名[HOST_NAME_MAX + 1]; gethostname(主機名,HOST_NAME_MAX + 1); ...