1 设置网络socket非阻塞: u_long has = 1;ioctl(m_sock, FIONBIO , &has); 这个函数很有可能返回success,却并没有设置成功。windows对此有优化,对于linux版本应采用fcntl设置。 总结如下: 2 windows环境下查看错误 3 E ...
分类:
其他好文 时间:
2016-08-30 17:38:19
阅读次数:
190
常见的异步IO存在的问题: 1.使用 fcntl(fd, F_SETFL, O_NONBLOCK);,为什么在处理上效率不好。 a.在没有数据可读写的时候,循环会不停执行,浪费掉大部分cpu b.每次尝试读写文件描述符,都会执行一次内核调用(recv,write),而系统调用耗时。 2.使用sele ...
分类:
其他好文 时间:
2016-08-20 10:09:05
阅读次数:
179
1、fcntl:manipulate file descriptor 1)简介:fcntl(file control)函数可执行各种描述符控制操作。 2)正确的使用方法(以设置“非阻塞”标记为例): 3)常用用法: (1)cmd为F_SETFL,flags“包含”O_NONBLOCK:把一个套接字设 ...
分类:
其他好文 时间:
2016-08-19 00:37:00
阅读次数:
353
服务端: 1 #include <sys/socket.h> 2 #include <unistd.h> 3 #include <sys/types.h> 4 #include <stdint.h> 5 #include <assert.h> 6 #include <fcntl.h> 7 #incl ...
分类:
其他好文 时间:
2016-08-13 10:04:44
阅读次数:
166
上一篇文章中介绍了采用了文件记录锁来实现更加安全的多进程互斥,它的平台兼容性也非常好,并且我们也采用它实现了NSDistributedLock的所有的方法.其实在OSX还可以采用文件读写锁来实现更加方便的进程互斥,在fcntl.h中我们可以看到这样的宏定义: 这些宏是同O_RDONLY,O_WRON ...
分类:
系统相关 时间:
2016-08-10 17:33:25
阅读次数:
187
一般通过以下函数设置套接字选项:getsockopt和setsockopt函数;fcntl函数;ioctl函数 #include /* See NOTES */ #include int getsockopt(int sockfd, int level, int optname, void *opt... ...
分类:
其他好文 时间:
2016-08-10 06:20:49
阅读次数:
272
【本文谢绝转载,原文来自http://990487026.blog.51cto.com】大纲
Linux系统开发
man文档的使用
文件IO
open()创建文件,指定权限位
open()接收参数创建文件
open()传两个参数第三个参数从内存取垃圾值
write()函数向文件写数据
write()函数的覆盖操作
open()..
分类:
系统相关 时间:
2016-08-03 06:46:59
阅读次数:
499
epoll_tcp.c#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<fcntl.h>#include<sys/socket.h>#include<netinet/in.h>#include<arpa/inet.h>#include<sys/epoll.h>staticintstartup(c..
分类:
Web程序 时间:
2016-08-01 07:00:01
阅读次数:
334
1. 非阻塞I/O
对于一个给定的描述符,有两种为其指定非阻塞I/O的办法:
i. 如果调用open获得描述符,则可制定O_NONBLOCK标志;
ii. 对于已经打开的一个描述符,则可调用fcntl,由该函数打开O_NONBLOCK文件状态标志。
#include "apue.h"
#include
#include
char buf[500000];
int m...
分类:
其他好文 时间:
2016-07-19 10:35:25
阅读次数:
160