unix hostname
程序为我提供了一种非常简单的方法来获取我的“真实”主机名(而不是localhost。例如,对我而言,它目前是unknown74e5[...]df7.att.net
)。但是如何使用C系统调用在我自己的代码中执行此操作?我想得到一个char *
,其中包含此字符串,以便我可以将其传递给gethostbyname
和类似字符。
虽然我很喜欢,但我也想知道如何通过UNIX系统调用获取我的IP地址,而不是依赖于程序(或者更糟的是,whatismyip.com)......
谢谢!
答案 0 :(得分:3)
gethostname(2)
是POSIX规定的C库函数,为hostname
程序提供支持:
int gethostname(char *name, size_t len);
答案 1 :(得分:1)
您可以使用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
结构,几乎可在所有平台上使用。正如托马斯在评论中提到的那样,glibc实施gethostname
作为对uname(2)
的调用。