`
isiqi
  • 浏览: 16752915 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Aio

阅读更多
#include <aio.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <fcntl.h> #include <errno.h> #include <netinet> /*socket address struct*/ #include <arpa> /*host to network convertion*/ #include <sys> #include <sys> #include <signal.h> //#include <sys> #define MAX_TRANSPORT_LENTH 512 #define MAX_LIST 5 void sig_handler(int signo, siginfo_t *info, void *context ) { int ret; struct aiocb *req; /* Ensure it's our signal */ if (info-&gt;si_signo == SIGIO) { req = (struct aiocb *)info-&gt;si_value.sival_ptr; if (aio_error( req ) == 0) { ret = aio_return( req ); (char*)(req-&gt;aio_buf+ret) == '\0'; puts(req-&gt;aio_buf); } } return; } int main() { int skt_fd,ret; struct aiocb my_aiocb; struct sigaction sig_act; struct sockaddr_in addr; memset(&amp;addr,0,sizeof(addr)); addr.sin_family = AF_INET; addr.sin_addr.s_addr = INADDR_ANY; addr.sin_port = htons(50001); skt_fd = socket(AF_INET, SOCK_DGRAM, 0); if(skt_fd == -1) { perror("Create socket failed"); exit(-1); } ret = bind(skt_fd,(struct sockaddr *)&amp;addr,sizeof(addr)); if(-1 == ret) { perror("Bind socket failed"); exit(-1); } memset(&amp;my_aiocb,0,sizeof(my_aiocb)); my_aiocb.aio_buf = malloc(MAX_TRANSPORT_LENTH+1); if (!my_aiocb.aio_buf) perror("malloc"); my_aiocb.aio_fildes = skt_fd; my_aiocb.aio_nbytes = MAX_TRANSPORT_LENTH; my_aiocb.aio_offset = 0; my_aiocb.aio_sigevent.sigev_notify = SIGEV_SIGNAL; my_aiocb.aio_sigevent.sigev_signo = SIGIO; my_aiocb.aio_sigevent.sigev_value.sival_ptr = &amp;my_aiocb; sigemptyset(&amp;sig_act.sa_mask); sig_act.sa_flags = SA_SIGINFO; sig_act.sa_sigaction = sig_handler; const struct aiocb *cblist[MAX_LIST] ={&amp;my_aiocb,NULL,NULL,NULL,NULL}; sigaction( SIGIO, &amp;sig_act, NULL ); ret = aio_read( &amp;my_aiocb ); //程序挂起直到等到某个信号 while ( aio_suspend( cblist, MAX_LIST, NULL ) == 0) { ret = aio_read( &amp;my_aiocb ); }; puts("Interrupted finish."); close(skt_fd); }</sys></signal.h></sys></sys></arpa></netinet></errno.h></fcntl.h></unistd.h></stdlib.h></stdio.h></aio.h>
分享到:
评论

相关推荐

    XgRiNdA_AIO_V5.8.0.zip

    【XgRiNdA_AIO_V5.8.0.zip】是一个压缩包文件,根据其命名规则,我们可以推测这可能是一个集成化软件工具的版本号。"AIO"通常代表"All In One",意味着这个软件集合可能包含了多种功能或工具,方便用户在一个统一的...

    科荣AIO管理系统V7版-用户手册

    《科荣AIO管理系统V7版-用户手册》是一份详尽的指南,旨在帮助用户理解和操作科荣AIO管理系统的最新版本——V7。这份手册不仅适合初学者,也适用于有一定经验的用户,提供了从基础到进阶的全方位学习资料。手册的...

    FRPFILE AIO v2.8.4.rar

    《FRPFILE AIO v2.8.4:解锁与绕过iOS系统FRP的全方位指南》 FRPFILE AIO v2.8.4是一款针对iOS设备的免费解锁工具,全称为“Factory Reset Protection FILE All in One”。该工具旨在帮助用户解决iOS设备的Factory ...

    艾肯Aio6声卡驱动_v1.37.5_兼容windows全系统

    艾肯Aio6声卡驱动_v1.37.5是专为艾肯(URC)公司的Aio6声卡设计的一款驱动程序,版本号为1.37.5,适用于Windows全系统,包括Windows 10。这款驱动程序的核心功能在于确保声卡在各种Windows操作系统上能够正常运行,...

    CISSP AIO4与AIO5的区别

    AIO4和AIO5分别代表第四版和第五版的CISSP全一册复习指南。 CISSP AIO4与AIO5之间的主要区别在于以下几个方面: 1. **更新的内容**:信息安全行业的发展日新月异,新的威胁、技术和法规不断涌现。AIO5相较于AIO4,...

    MAS_AIO_v2.2.cmd.rar

    【标题】"MAS_AIO_v2.2.cmd.rar" 是一个压缩文件,它包含了一个名为 "MAS_AIO_v2.2.cmd" 的命令行脚本。这个文件很可能是一个集成安装包或者自动化工具的版本2.2,特别是针对MAS(可能是“Multi-Application Suite”...

    黑苹果联想 aio520efi i5 8500

    在这个特定的场景中,我们讨论的是在联想AIO520EFI这款一体机上成功安装了黑苹果系统。 联想AIO520EFI是一款配备Intel Core i5 8500处理器的桌面电脑。i5 8500是第八代Intel酷睿处理器,拥有6个物理核心和12线程,...

    电脑软件MSVBCRT.AIO.2021.10.13 x86x64.rar

    标题中的“电脑软件MSVBCRT.AIO.2021.10.13 x86x64.rar”表明这是一个针对微软Windows操作系统编译的软件集合,名为MSVBCRT,它集成了多种版本的运行时库,并且支持32位(x86)和64位(x64)架构。MSVBCRT通常指的是...

    bio nio aio demo

    为了处理与外部世界的交互,Java提供了三种不同的I/O模型:BIO( Blocking I/O)、NIO(Non-blocking I/O)和AIO(Asynchronous I/O)。这些模型各有优缺点,适用于不同场景。下面我们将深入探讨这三种I/O模型,并...

    脱壳工具 Unpacker AIO Tool

    【脱壳工具 Unpacker AIO Tool】是一种集成多种脱壳功能的全面性工具,旨在帮助IT专业人士和安全研究人员分析和解除对恶意软件或可疑程序的保护层。脱壳是逆向工程的一部分,目的是揭示被封装或加密的原始代码,以便...

    aio方式socket文件传输--改进

    "aio"(Asynchronous Input/Output)方式的socket文件传输是一种高效、非阻塞的通信模式,它利用异步I/O模型来提高系统性能。本文将深入探讨aio方式的socket文件传输及其在客户端和服务器端的应用。 首先,我们需要...

    联想超融合AIO H1000 V4.5.2 使用手册 R1.0 2021.01.11.pdf

    但是,从标题和描述可以确定,提供的文件是关于联想超融合AIO H1000 V4.5.2的使用手册。超融合基础设施(Hyper-Converged Infrastructure,简称HCI)是IT领域的一种新型基础设施架构,它将传统数据中心的计算、存储...

    Microsoft Runtimes AIO x86 x64-20180119.rar

    微软常用运行库合集——Microsoft Runtimes AIO x86+x64是采用microsoft visual studio 20xx编写的软件必须使用的公用dll运行库,网络上的部分精简软件没有附带这些公用dll,导致其无法运行。Microsoft Runtimes AIO...

    微软常用运行库合集MSVBCRT.AIO.2022.06.21.zip

    【标题】"微软常用运行库合集MSVBCRT.AIO.2022.06.21.zip"指的是一个包含微软多个基础运行库的集合包,该包旨在为用户计算机提供必要的运行环境,以便运行依赖这些库的软件。这个集合通常包括了Microsoft Visual C++...

    MAS-AIO-2.0-Chs

    MAS_AIO_2.0_Chs

    微软常用运行库合集MSVBCRT.AIO.2023.03.17.zip

    【标题】"微软常用运行库合集MSVBCRT.AIO.2023.03.17.zip"指的是一个包含多个微软基础运行库的集合,这些库是为Windows操作系统设计的,对于运行依赖这些库的软件至关重要。这个压缩包的版本日期是2023年3月17日,...

    微软常用运行库合集MSVBCRT.AIO.2023.03.10.zip

    微软常用运行库合集MSVBCRT.AIO.2023.03.10.zip是一款集合了多个Microsoft Visual C++运行时库的软件包,对于Windows用户来说,它是安装许多应用程序所必需的组件。这个压缩包包含了从早期版本到最新版本的多种VC++...

    微软常用运行库合集MSVBCRT.AIO.2022.10.21.zip

    "微软常用运行库合集MSVBCRT.AIO.2022.10.21.zip" 这个标题表明这是一个包含了微软(Microsoft)多个常用运行库的集合,其中MSVBCRT是Microsoft Visual C++运行时库的简称,AIO代表"All In One",意味着这个软件包整合...

    微软常用运行库合集MSVBCRT.AIO.2023.04.03.zip

    【微软常用运行库合集MSVBCRT.AIO.2023.04.03.zip】是一款针对Windows操作系统的软件支持包,它包含了微软开发的多个关键运行时库,这些库对于运行依赖于Microsoft Visual C++编译器的程序至关重要。运行库是操作...

    微软常用库合集MSVBCFJ_AIO_2016.03_X86x64.rar

    【微软常用库合集MSVBCFJ_AIO_2016.03_X86x64.rar】是一个包含微软系统必备组件的集合,主要用于解决用户在不同Windows操作系统上运行应用程序时遇到的兼容性问题。这个压缩包旨在提供一系列重要的运行库,确保软件...

Global site tag (gtag.js) - Google Analytics