c语言-1

1.linux中"一切都是文件",是设计哲学,fd 是文件描述符,是进程用来"操作文件"的数字编号。

2.为什么说"Linux 一切都是文件"

在Linux里,不只是普通文件(txt,jpg),下面这些全都被当成文件来读写:

·硬件设备:硬件、键盘、显示器、网卡

·管道、套接字(socket)

·进程信息、系统状态

·终端、打印机、声卡

统一用一套接口:

open/read/write/close/ioctl

好处:

1)一套api操作所有资源,简单统一

2)可以用重定向、管道、shell 命令直接操作硬件和进程

3)驱动开发、上层应用都遵循同一套模型


fd是"万能I/O把手",socket是"网络专用把手"


C语言项目中的作用和定位:

fd:操作系统底层I/O句柄,用于读写文件、管道、标准输入输出等。常用于文件操作、重定向、select/poll多路复用(其中fd集可包含socket fd)。

Socket:网络编程核心抽象,用于实现客户端/服务器通信。需要设置地址、端口、协议,调用bind/connect/listen/accept等。

定位:在实际项目中,如果你写网络程序,你会创建socket fd;之后你可以把这个fd传给read/write,或者用send/recv,也可以将它加入fd_set进行select。理解socket是fd的一种,有助于统一处理I/O多路复用和非阻塞I/O。

相关推荐
mqiqe16 小时前
AgentScope Java Harness:4. 双层记忆系统 让 Agent 拥有真正的“长期大脑“
java·开发语言
gugucoding16 小时前
46. 【Java】JUC并发工具:让并发更简单
java·开发语言
Nebula_g17 小时前
JavaSE基础语法:面向对象高级(代码中的成分)
java·开发语言·编程·javase·技术栈·高级语法
for_ever_love__17 小时前
python基础语法学习: 异常的传递性
开发语言·python·学习
依然鸣18 小时前
PTA团体程序设计天梯赛L1真题讲解L1-077-080
开发语言·c++·算法·深度优先·pat考试·图论
byxdaz18 小时前
QT中服务使用
开发语言·qt
库玛西19 小时前
现代 C++ 智能指针全景指南:从 RAII 思想到工业级实践
c语言·开发语言·c++·笔记·面试
AC赳赳老秦19 小时前
风控岗应用:OpenClaw 采集公开司法与经营异常数据,自动生成企业风险评估报告
大数据·c语言·数据库·人工智能·python·php·openclaw
caimouse20 小时前
ReactOS 图形系统分析(19):颜色转换对象 — XLATEOBJ(xlateobj.c/h)
c语言·开发语言
liulilittle20 小时前
无锁并发容器的设计与实现原理
开发语言·c++·set·map·并发·无锁·lock-free