关于gethostname系统调用

关于hostname的事情,我不知道是存放在系统的什么地方的,想知道时却发现是通过系统调用gethostname实现的,给系统调用在linux上只要包含<unistd.h>,就可以使用;
但是在windows上就没有在这个里面,windows上我没有使用visual studio,而是下载了一个dev-c++;因为对于命令行的东西比较熟悉一些,同样的程序在linux上是没问题的,但是在windows上就是编译不过去;
代码如下:
#include <unistd.h>
#include <iostream>

using namespace std;

int main(int ac, char ** av) {
    char name[256];
    size_t len = 256;
    gethostname(name, len);
    cout << name << endl;
    return 0;
}

在windows上需要添加:

#include <winsock2.h>

而在编译时也需要把libwsock32.a 带上,如:
g++ -L D:\Program\DEV-CPP\Lib  -o gethostname gethostname.cpp 
D:\Program\DEV-CPP\Lib\libwsock32.a

你可能会问,为什么已经使用了-L了libwsock32.a还要使用全路径,这个我也不知道,反正不给全路径就是找不到该文件。

虽然windows上也编译成功了,但是输出的结果却不是hostname命令所看到的,难道是这个libwsock32.a里面的gethostname的实现和hostname命令不太一样?通过denpendency woker这个小软件查了一下,使用的是同一个dll中的系统调用。 为什么结果不一样就不知道了,windows上的东西就是不好查。

留下评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据