0

unixhostname程序为我提供了一种非常简单的方法来获取我的“真实”主机名(不是 localhost。例如,对我来说它是 current unknown74e5[...]df7.att.net)。但是如何在我自己的代码中使用 C 系统调用来做到这一点呢?我想得到一个char *里面有这个字符串的,这样我就可以把它传递给gethostbyname类似的东西。

在此期间,我还想知道如何使用 UNIX 系统调用而不是依赖程序(或更糟糕的是 whatismyip.com)来获取我的 IP 地址......

谢谢!

4

2 回答 2

3

gethostname(2)是为程序提供动力的 POSIX 授权的 C 库函数hostname

   int gethostname(char *name, size_t len);
于 2013-04-08T11:23:00.510 回答
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 也提到了函数和结构,并且几乎在所有平台上都可用unameutsname正如 Thomas 在评论中提到的,glibc 实现gethostname为对uname(2).

于 2013-04-08T11:21:33.613 回答