Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';socket的FIONBIO和FIOASYNC的区别是什么?_C_Asyncsocket - Fatal编程技术网

什么';socket的FIONBIO和FIOASYNC的区别是什么?

什么';socket的FIONBIO和FIOASYNC的区别是什么?,c,asyncsocket,C,Asyncsocket,似乎这两个选项都可以用来使套接字非阻塞/异步 或者非阻塞和异步之间有什么区别?如果您还没有,您可以在维基百科的页面上看到非阻塞和阻塞套接字之间的区别 此外,还可以查看ioctlsocket() : FIOASYNC支持一种简单的异步I/O通知形式。这 命令使内核向进程或进程发送SIGIO信号 可以进行I/O时的进程组。仅限插槽、TTY和 伪TTY实现此功能 FIONBIO启用非阻塞I/O。其效果与设置 O_带有fcntl子例程的非块标志。参数的第三个参数 此命令的ioctl子例程是指向以下整数的

似乎这两个选项都可以用来使套接字非阻塞/异步


或者非阻塞和异步之间有什么区别?

如果您还没有,您可以在维基百科的页面上看到非阻塞和阻塞套接字之间的区别

此外,还可以查看ioctlsocket()

:

FIOASYNC支持一种简单的异步I/O通知形式。这 命令使内核向进程或进程发送SIGIO信号 可以进行I/O时的进程组。仅限插槽、TTY和 伪TTY实现此功能

FIONBIO启用非阻塞I/O。其效果与设置 O_带有fcntl子例程的非块标志。参数的第三个参数 此命令的ioctl子例程是指向以下整数的指针: 指示是启用还是禁用非阻塞I/O。A. 值为0将禁用非阻塞I/O


我希望这能帮你一点忙

当你说“设置两个选项”时,你是什么意思?它们执行两个不同的操作。IMO one使用FIOASYNC或FIONBIO,因为它们执行相同的操作。您提到它们执行不同的操作,您能提供一个示例吗?FIOASYNC设置/清除O_异步标志;发送SIGPOLL信号。FIONBIO设置/清除O_非块标志。这能澄清什么吗?