有人知道一个获取Linux服务器主机名的函数吗?我不想包含任何头文件或编译其他库,希望有默认内置的函数。我是C语言新手 :)
有人知道一个获取Linux服务器主机名的函数吗?我不想包含任何头文件或编译其他库,希望有默认内置的函数。我是C语言新手 :)
想知道类似于 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;
}
sizeof(hostname) -1
作为长度传递给 gethostname()
。否则,如果发生截断,你可能会得到没有空终止符的结果。根据我的 man 手册:“ POSIX.1 表示,如果发生这种截断,则返回的缓冲区是否包含终止空字节是未指定的。” - scaihostname[1023]
为空。在这种情况下,您可以继续将sizeof(hostname)
传递给它,然后在gethostname()
返回后将hostname[1023]
设置为空。 - reirab在Alain Pannetier的答案基础上,您可以通过使用HOST_NAME_MAX来节省一些字节:
#include <limits.h>
...
char hostname[HOST_NAME_MAX+1];
gethostname(hostname, HOST_NAME_MAX+1);
...