2012年8月19日

Linux下fcntl函数简单用法

摘要: #include <unistd.h> #include <fcntl.h>int fcntl(int fd , int cmd,...);fcntl()用来操作文件描述符的一些特性。针对cmd的值,fcntl能够接受第三个参数int argfcntl的返回值与命令有关。如果出错,所有命令都返回-1,如果成功则返回某个其他值。下列命令有特定返回值:F_DUPFD,F_GETFD,F_GETFL以及F_GETOWN。第一个返回新的文件描述符,第二、三个返回相应标志,最后一个返回一个正的进程ID或负的进程组ID。fcntl函数有5种功能:1.复制一个现有的描述符(F_DUP 阅读全文

posted @ 2012-08-19 17:59 Chris-Lin 阅读(1570) 评论(0) 推荐(1) 编辑

设置非阻塞socket及使connect调用超时

摘要: 一般TCP建立连接过程中需要“三次握手”。在socket阻塞的情况下,connect要花一个往返时间完成,从几毫秒到几百毫秒,如果网络拥塞,或者连接的主机还没启动,则要花费更长的时间,默认时间(典型值为75秒,也可能需要更长的时间)。可以通过将socket设置为非阻塞再用select来实现connect调用超时,步骤如下:1.创建socket2.设置socket为非阻塞3.利用connect()返回值判断connect的状态(此时connect不阻塞)4.利用select()返回值判断connect的状态void main(void){ int fd; int flags;... 阅读全文

posted @ 2012-08-19 17:33 Chris-Lin 阅读(1767) 评论(0) 推荐(0) 编辑

导航