ioctl获取ip(自动获取ip地址上不了网)
时间:2023-10-28 21:23:23 浏览量:55
高级io
先介绍记录锁的概念和记录锁的数据结构。然后介绍阻塞io,非阻塞IO,异步io,IO多路转接等概念,后者都是针对前者更优的技术。IO多路转接技术包括:select,peslect,poll。最后介绍存储映射IO。
进程间通信
介绍了基本进程间通信机制,包括两大类:
网络进程间通信
介绍网络间的进程通信机制:套接字。首先是如何寻址。然后介绍socket编程的连接建立,数据传输等。
高级进程间通信
高级进程间通信提供一种可以在进程间传递文件描述符的机制,包括STREAMS管道和unix域套接字
需要C/C Linux服务器架构师学习资料后台私信“资料”(资料包括C/C ,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,ffmpeg等),免费分享
1.1 概念
1.2 如何指定非阻塞io
2.1 概述
2.2 fcntl
cmd:
F_GETLK:获取锁信息
F_SETLK:设置锁信息
F_SETLKW:阻塞版本的F_SETLK
flockptr:指向flock的指针struct flock{ short l_type;//F_RDLCK共享读锁,F_WRLCK独占写锁,F_UNLCK解锁 off_t l_start;//加锁区域其实位置 short l_whence;//和start一起确定加锁位置 off_t l_len;//加锁长度 pid_t l_pid;//进程id }
不同锁的兼容性:针对同一把锁。如果不同锁,新锁总是覆盖旧锁
2.3 锁的隐含继承和释放
2.4 FreeBSD中记录锁的数据结构
3.1 基本概念
3.2 STREAMS消息
3.3 putmsg和putpmsg
3.4 getmsg和getpmsg
4.1 阻塞io
4.2 非阻塞io
4.3 异步io
4.4 IO多路转接
4.5 select
readfds:可读描述符集,每一个文件描述符占一位
内部结构视图
描述符集的设置函数
maxfdp1:最大描述符 1,可设置为FD_SETSIZE(1024)
writefds:可写描述符集
exceptfds:异常描述符集
tvptr:愿意等待的时间 NULL:永远等待,捕捉到信号则中断等待时间每个字段为0:完全不等待,测试指定的文件描述符并立即返回不为0:实际等待的时间
返回值: 返回-1:表示出错,文件描述符没有准备好时收到信号,此时不修改文件描述符返回0:已经超时了,指定都文件描述符都没有准备好正数:已经准备好的文件描述符数量(每个文件描述符读写单独各算一次)
4.6 pselect
pselect与select类似,仅仅少部分有差异,如下:
超时值的数据结构不同
pselect超时值为const,不可改变
可使用信号屏蔽字
4.7 poll
poll类似与select,不过接口有所不同
不是为每个状态构造文件描述符集,而是构造一个pollfd的数组,数组每个元素指定文件描述符编号和关心的状态
参数: events:用户设置关心的事件 reevents:内核返回文件描述符事件
5.1 概述
异步io并不像select和poll对所有文件描述符都生效
5.2 SystemV异步IO
5.3 BSD异步IO
异步IO是SIGIO(通用异步io)和SIGURG(通知网络进程数据到达)两个信号的组合
进程间通信机制包括:
1.1 概述
1.2 管道的创建
1.3 popen和pclose
1.4 FIFO
消息队列,信号量和共享存储,这三种IPC称做XSI IPC,他们之间有很多共性,包括:
2.1 标识符和键
2.2 权限结构
2.3 结构限制
2.4 优点和缺点
缺点
优点
特征对比
3.1 概述
3.2 数据结构
3.3 msgctl函数
msgctl函数对队列执行多装操作(类似于ioctl,垃圾桶函数)
3.4 msgsend函数
3.5 msgrcv函数
4.1 概述
4.2 数据结构
4.3 semctl函数
4.4 信号量与记录锁在liunx的对比
5.1 概述
5.2 数据结构
5.3 shmctl函数
5.4 共享存储的使用
5.5 共享存储的释放
2.1 字节序
2.2 地址格式
2.3 地址查询
2.4 将套接字与地址绑定
3.1 connect
3.2 listen
3.3 accept
4.1 send
4.2 recv
5.1 套接字选项包括
5.2 设置套接字的函数