IO, 文件描述符, socket 相关疑惑

发布于 2022-09-11 22:14:24 字数 850 浏览 25 评论 0

近期准备看看 网络编程 相关的内容, 最初想从IO开始了解, 并且了解到了 用户空间,内和空间, 标准IO, 文件IO 的相关的比较基础的知识, 明白了 标准IO在用户区有缓存, 而文件IO在用户区没有缓存 (内核区是都有缓存)

但显然自己还是太小白了

接下来, 在了解 文件描述符 相关知识时便有了疑问1 :
网络上有说 文件描述符 是 内核空间 的 PCB进程控制块里面的结构体中有个文件描述符表, 并说 文件描述符表是在内核空间的; 但也有人说文件描述符表是用户空间的, 此处没有想太明白, 到底是哪儿的?

疑问2:
看到socket套接字也是有文件描述符的, 问题是, 在linux上, 一些IO设备如终端,键盘,貌似都能找到对应的文件, 并且直接对文件进行写入就可以看到效果, 证明确实是在对文件操作,有文件描述符也就说的过去
但是socket网络编程时, 既然也有文件描述符, 正如linux说的一切皆文件, 那网卡不也应该有对应的文件么? 但确实没找到, 比较疑惑?

疑问3:
文件描述符 指向的是儿, 内核缓冲区么, 是从内核缓冲区读信息么?
这块只知道标准IO读取文件时, 会经过内核缓冲区和用户缓冲区, 不知道文件描述符在这儿是个什么角色

疑问4:
如果网卡设备没有对应文件的话, socket套接字对应的文件描述符, 是直接指向....内核缓冲区? 还是网络通道?

疑问4:
socket所说的缓冲区, 指的是哪部分的缓冲区, 是内核缓冲区, 用户空间缓冲区, 还是网卡设备上的缓冲区?

完全懵逼, 不知道哪里看资料, 疑问太多了

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

时光是把杀猪刀 2022-09-18 22:14:24

疑问3: 文件描述符 / fd只是个整数,你可以想成是某个数组的索引

疑问2: 一个fd对应的是 被进程打开的 可读写的东西,比如 open / listen 的返回值。/dev/ 那些有文件名的东西不是文件描述符

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文