技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 其他 --> 关于gethostname系统调用

关于gethostname系统调用

浏览:1182次  出处信息
关于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上的东西就是不好查。
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:宏中#和##的用法
后一篇:可选闭合标签 >>
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1