您的位置:首页 > 其它

高级套接字函数 fcntl 设置socket 非阻塞

2012-05-28 17:14 183 查看
status = fcntl (hand, option, mode ) ;

上述fcntl函数调用中,各参数定义如下:

handle:已打开的文件句柄。

option:一般可以是下列两种值:

F_GETFL:表示读取文件状态值。

F_SETFL:表示设置文件状态值。

(注意:F_GETFL和F_SETFL都被定义在fcntl.h)

mode:如果optipn是F_GETFL,则这个参数值可以是任意值。如果是F_SETFL,则参数值可以是下列值:

O_WRONLY:将文件设置成只写状态。

O_RDWR: 将文件设置成读写状态。

O_RDONLY:将文件设置成只读状态。

status:函数会将调用结果赋给status,如运行失败,则status的值会被设成-1。

//设置socket非阻塞
void setnonblocking(int sock)
{
    int opts;
    opts = fcntl(sock, F_GETFL);
    if (opts < 0)
    {
        perror("fcntl(sock, GETFL)");
        exit(1);
    }
    opts = opts|O_NONBLOCK;
    if (fcntl(sock, F_SETFL, opts) < 0)
    {
        perror("fcntl(sock, SETFL, opts)");
        exit(1);
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: