unp -- 22




1 2 3

200x200


概述FIFO 有时被称为“命名管道”管道只能由相关进程使用,这些相关进程必须有共同的祖先进程,但通过 FIFO,即便是不相关的进程也可以相互通信FIFO 的创建函数原型i

#读书笔记    #技术帖    #unp    #unix网络编程   

200x200


概述点分十进制的数值地址(如 112.126.74.142)这样的地址是很难记忆的,尤其是随着 IPv6 的推广,数值地址变得相当长,手工输入越来越不现实,所以需要函数在

#读书笔记    #技术帖    #linux    #unix   

200x200


概述linu 提供如下 IO 接口:read 和 write -- 最简单的读写函数readn 和 write

#读书笔记    #技术帖    #linux    #unix   

200x200


概述UDP 是无连接、不可靠的数据报协议,而 TCP 是面向连接的可靠字节流协议,他们具有非常大的差异DNS、NFS 和 DNMS 等领域,

#读书笔记    #技术帖    #linux    #unix   
函数简介fcntl 函数可执行各种描述符控制操作ioctl 函数则对 io 操作定义了各种控制操作小结fcntl、ioctl 和路由套接字操作小结操作fcntlioctl路由套接字POSIX规定首选方案设置套接字为非阻塞IO型F_SETFL, O_NONBLOCKFIONBIO fcntl设置套接字为信号驱动IO型F_SETFL, O_ASYNCFIOASYNC fcntl设置套接字属主F_SETOWNFIOCSPGRP 或 FIOSETOWN fcntl获取套接字属主F_GETOWNFIOCGPGRP 或 FIOGETOWN fcntl获取套接字接收缓冲区中的字节数 FIONREAD  测试套接字是否处于带外标志 SIOCATMARK sockatmark获取接口列表 SIOCGIFCONFsysctl 接口操作 SIOC[GS]IFxxx  ARP高速缓存操作 SIOCxARPRTM_xxx 路由表操作 SIOCxxxRTRTM_xxx 函数原型这里我们主要讨论 fcntlint fcntl(int fd, int cmd, ... /* arg */
#读书笔记    #技术帖    #linux    #unix   
描述符传递进程间通信的另一种方式是直接使用已经打开的描述符,比如 socket 描述符,这样一个进程在这个描述符上写数据,一个进程在这个描述符上读数据,即可实现通信下面的方法可以传递已打开的描述符:fork 返回后,子进程与父进程共享所有已打开的描述符,同时,exec 执行后,一般已打开的描述符状态仍然会保持不变但是限制在于必须是父子进程间通信并且只能由父进程传递给子进程下面即将介绍的 socketpair 函数则没有这样的限制socketpair 函数int socketpair (int family, int type, int protocol, int sockfd[2]); 定义于 sys/socket.h调用成功返回非 0 的连接描述符,出错返回 -1 family 参数必须为 AF_LOCALprotocol 参数必须为 0type 参数可以选择 SOCK_STREAM 或 DGRAM_STREAM新创建的两个套接字描述符作为 sockfd[0] 和 sockfd[1] 返回type 为 SOCK_S
#读书笔记    #技术帖    #linux    #unix   
概述unix 域协议并不是一个实际的协议族,而是在单个主机上执行 C/S 通信的一种方式,是进程间通信的方法之一unix 域协议提供两类套接字:字节流套接字和数据报套接字,分别类似于 TCP 和 UDP,他所使用的 API 几乎等同于网络 C/S 通信所使用的 API优势与其他 IPC 方法相比,unix 域协议有以下优势:与两端位于同一个主机的 TCP 套接字相比,速度快一倍可以在同一主机的不同进程间传递描述符域套接字会将客户凭证(用户ID和组ID)提供给服务器,从而可以提供额外的安全措施unix 域套接字地址结构struct sockaddr_un { sa_family_t sun_family; /* AF_LOCAL */ char sun_path[140]; /* null-terminated pathname */ } 定义于 sys/un.h存放在sun_path数组中的路径名必须以空字符结尾,如果 sun_path 是一个空字符串,则等价于 IPv4 的 INADDR_ANY 或&n
#读书笔记    #技术帖    #linux    #unix   
概述epoll 是 linux 内核为处理大批量文件描述符而对 poll 进行的改进版本,是 linux 下多路复用 IO 接口 select/poll 的增强版本,显著提高了程序在大量并发连接中只有少量活跃的情况下的CPU利用率在获取事件时,它无需遍历整个被侦听描述符集,只要遍历被内核 IO 事件异步唤醒而加入 ready 队列的描述符集合就行了epoll 除了提供 select/poll 所提供的 IO 事件的电平触发,还提供了边沿触发,,这样做可以使得用户空间程序有可能缓存 IO 状态,减少 epoll_wait 或 epoll_pwait 的调用,提高程序效率 实现原理当某个进程调用 epoll_create 函数创建 epoll 专用的文件描述符时,Linux 内核会创建一个 eventpoll 结构体变量:struct eventpoll { ... struct rb_root rbr; // 红黑树根节点,存储 epo
#读书笔记    #技术帖    #linux    #unix   
简介poll 与 select 函数类似,但在处理流设备时,poll 可以提供额外的信息函数原型int poll (struct pollfd *fdarray, unsigned long nfds, int timeout); 定义于 poll.h 中若超时返回0,出错返回-1,否则返回就绪描述符数目参数说明fdarray第一个参数是一个结构体数组头指针,数组的每个元素是一个 pollfd 结构:struct pollfd { int fd; short events; short revents; }; 要测试的条件由 events 成员指定,函数调用结束后在 revents 成员中返回描述符状态与 select 的值-结果参数不同,这样做无须每次调用后重新为参数赋值 events、revents 常量events、revents 可选常量常量值events可选revents可选说明输入处理   POLLINYY普通或优先级带数据可读POLLRDNORMYY普通数据可读POLLRDBANDYY优先级带数据可读POLLPRIYY高优先级数据可读输出处理&
#读书笔记    #技术帖    #linux    #unix   
1 2 3



京ICP备15018585号