关于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上的东西就是不好查。
关于gethostname系统调用
本机暂存
同分类推荐文章
- 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
- Go 实验特性详解 (2026-06-21 10:05:27)
- amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)
建议继续学习
- 如何学好C++语言 (累计阅读 10,448)
- Emacs配置C/C++-mode的代码智能提示和自动补全 (累计阅读 10,412)
- colortail,让 tail 命令绚丽起来 (累计阅读 10,260)
- 介绍几个QQ开源项目及协议下载 (累计阅读 10,220)
- 在C++中实现foreach循环,比for_each更简洁! (累计阅读 9,500)
- 几个内存相关面试题(c/c++) (累计阅读 9,446)
- 关于使用STL的红黑树map还是hashmap的问题 (累计阅读 8,876)
- 浅析C++多线程内存模型 (累计阅读 8,803)
- C++ 多线程编程总结 (累计阅读 8,097)
- I/O模型-读书笔记 (累计阅读 7,908)