FD_ZERO(fd_set *fdset) 将指定的文件描述符集清空,在对文件描述符集合进行设置前,必须对其进行初始化,如果不清空,由于在系统分配内存空间后,通常并不作清空处理,所以结果是不可知的。 FD_SET(fd_set *fdset) 用于在文件描述符集合中增加一个新的文件描述符。 FD_CLR(fd_set *fdset) 用于在文件描述符集...
在Linux中,内核利用文件描述符(File Descriptor)即文件句柄,来访问文件。文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件。宏FD_ZERO、FD_SET、FD_CLR、FD_ISSET中“FD”即为file descriptor的缩写,下面来一一进行介绍。 首先介绍一个...
fd_set结构体:可以理解为一个集合,这个集合中存放的是文件描述符(file descriptor),即文件句柄。 FD_ZERO 用法:FD_ZERO(fd_set*); 用来清空fd_set集合,即让fd_set集合不再包含任何文件句柄。 FD_SET 用法:FD_SET(int ,fd_set *); 用来将一个给定的文件描述符加入集合之中 FD_CLR 用法:FD_CLR(int ,...
第一,struct fd_set可以理解为一个集合,这个集合中存放的是文件描述符(filedescriptor),即文件句柄,这可以是我们所说的普通意义的文件,当然Unix下任何设备、管道、FIFO等都是文件形式,全部包括在内,所以毫无疑问一个socket就是一个文件,socket句柄就是一个文件描述符。fd_set集合可以通过一些宏由人为来操作: FD_ZE...
int pipe(int fd[2]); 该功能是创建一个无名管道 对于参数来说:fd文件描述符,fd[0]表示读端 对于返回值来说,成功返回0,失败返回错误代码 一个简单的使用例子: #include <iostream> #include <cassert> #include <unistd.h> #include <sys/wait.h> ...
返回值:成功则返回新的文件描述符new_fd,失败返回-1 常用实例: 代码语言:javascript 复制 struct sockaddr_in clientaddr; memset(&clientaddr, 0, sizeof(struct sockaddr)); int addrlen = sizeof(struct sockaddr); int new_fd = accept(sfd, (struct sockaddr*)&clientaddr, &addrlen); if(new...
ZERO(fd_set *fdset); //清空集合 2. void FD_SET(int fd, fd_set *fdset); //将一个给定的文件描述符加入集合之中 3. void FD_CLR(int fd, fd_set *fdset); //将一个给定的文件描述符从集合中删除 4. int FD_ISSET(int fd, fd_set *fdset); //检查集合中指定的文件描述...
icmp_packet = (struct icmp *)(packet + (ip_packet->ip_hl << 2)); // 计算ICMP报文的起始地址 addr_len = sizeof(struct sockaddr_in); // 设置等待超时时间 timeout.tv_sec = MAX_WAIT_TIME; timeout.tv_usec = 0; // 设置文件描述符集合 FD_ZERO(&rfds); FD_SET(sockfd, &rfds); /...
/etc:配置文件 /bin:重要执行档 /dev:所需要的装置文件 /lib:执行档所需的函式库与核心所需的模块 /sbin:重要的系统执行文件 这五个目录千万不可与根目录分开在不同的分区。 /usr 的意义与内容 依据FHS的基本定义,/usr里面放置的数据属于可分享的与不可变动的(shareable, static), 如果你知道如何透过网络进...