Linux 下 socket 设置为非阻塞方式和 fcntl 系统调用
[ 日期: 2011-04-16] 来源: Linux 社区 作者: Linux
用以下方法将 socket 设置为非阻塞方式
int flags = fcntl(socket, F_GETFL, 0);
fcntl(socket, F_SETFL, flags | O_NONBLOCK);
用以下方法将 socket 设置为非阻塞方式
int flags = fcntl(socket, F_GETFL, 0);
fcntl(socket, F_SETFL, flags | O_NONBLOCK);
将非阻塞的设置回阻塞可以用
int flags = fcntl(socket, F_GETFL, 0);
fcntl(socket, F_SETFL, flags & ~O_NONBLOCK);
功能描述:根据文件描述词来操作文件的特性。
用法:
int fcntl(int fd, int cmd);
int fcntl(int fd, int cmd, long arg);
int fcntl(int fd, int cmd, struct flock *lock);
参数:
fd :文件描述词。
cmd :操作命令。
arg :供命令使用的参数。
lock :同上。
有以下操作命令可供使用
一 . F_DUPFD :复制文件描述词 。
二 . FD_CLOEXEC :设置 close-on-exec 标志。如果 FD_CLOEXEC位是 0,执行 execve 的过程中,文件保持打开。反之则关闭。
三 . F_GETFD :读取文件描述词标志。
四. F_SETFD :设置文件描述词标志。
五 . F_GETFL :读取文件状态标志。
Linux 下 socket 设置为非阻塞方式和 fcntl 系统调用
[ 日期: 2011-04-16] 来源: Linux 社区 作者: Linux
用以下方法将 socket 设置为非阻塞方式
int flags = fcntl(socket, F_GETFL, 0);
fcntl(socket, F_SETFL, flags | O_NONBLOCK);
用以下方法将 socket 设置为非阻塞方式
int flags = fcntl(socket, F_GETFL, 0);
fcntl(socket, F_SETFL, flags | O_NONBLOCK);
将非阻塞的设置回阻塞可以用
int flags = fcntl(socket, F_GETFL, 0);
fcntl(socket, F_SETFL, flags & ~O_NONBLOCK);
功能描述:根据文件描述词来操作文件的特性。
用法:
int fcntl(int fd, int cmd);
int fcntl(int fd, int cmd, long arg);
int fcntl(int fd, int cmd, struct flock *lock);
参数:
fd :文件描述词。
cmd :操作命令。
arg :供命令使用的参数。
lock :同上。
有以下操作命令可供使用
一 . F_DUPFD :复制文件描述词 。
二 . FD_CLOEXEC :设置 close-on-exec 标志。如果 FD_CLOEXEC位是 0,执行 execve 的过程中,文件保持打开。反之则关闭。
三 . F_GETFD :读取文件描述词标志。
四. F_SETFD :设置文件描述词标志。
五 . F_GETFL :读取文件状态标志。
Linux 下 socket 设置为非阻塞方式和 fcntl 系统调用
[ 日期: 2011-04-16] 来源: