IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

关于gethostname系统调用

PHPor 的Blog 2010-04-12 09:16:44 累计浏览 1,662 次
本机暂存
关于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上的东西就是不好查。

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. 如何学好C++语言 (累计阅读 10,449)
  2. Emacs配置C/C++-mode的代码智能提示和自动补全 (累计阅读 10,412)
  3. colortail,让 tail 命令绚丽起来 (累计阅读 10,260)
  4. 介绍几个QQ开源项目及协议下载 (累计阅读 10,220)
  5. 在C++中实现foreach循环,比for_each更简洁! (累计阅读 9,500)
  6. 几个内存相关面试题(c/c++) (累计阅读 9,447)
  7. 关于使用STL的红黑树map还是hashmap的问题 (累计阅读 8,876)
  8. 浅析C++多线程内存模型 (累计阅读 8,803)
  9. C++ 多线程编程总结 (累计阅读 8,098)
  10. I/O模型-读书笔记 (累计阅读 7,909)