- 1、本文档共79页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * 【提问】如果定位到文件尾后面n个字符,进行写操作会怎样? * * * * * * * * * * * * * * * * * * * * sigaction sigaction信号安装函数 int?sigaction(int?signo, const?struct?sigaction?*restrict act, struct?sigaction?*restrict oact); 参数说明 signo 信号值 act 待安装的sigaction结构体 oact 安装前的sigaction结构体 sigaction struct?sigaction{??void?(*sa_handler)(int);??sigset_t sa_mask;??int?sa_flag;??void?(*sa_sigaction)(int,siginfo_t?*,void?*);}; 信号处理程序 屏蔽信号集 选项(SA_SIGINFO) 和选项有关的信号处理函数 sigaction sa_mask设置为SA_SIGINFO,则使用void?(*sa_sigaction)(int,siginfo_t?*,void?*);否则使用void?(*sa_handler)(int); sigaction struct sigaction act; sigemptyset(act.sa_mask);//要屏蔽的信号 act.sa_flags = SA_SIGINFO;//可以携带除信号外的附加参数 act.sa_sigaction = readCompletedHandler;//信号处理函数 sigaction(SIGUSR1, act, NULL);//安装信号处理函数 sigaction void readCompletedHandler(int s, siginfo_t *info, void *context) { struct aiocb *pcb = (struct aiocb*)info-si_value.sival_ptr; printf(read = %s\n, (char*)pcb-aio_buf); bzero((char*)pcb-aio_buf, 1024); } 异步IO struct aiocb aio_read aio_write aio_error struct aiocb 在异步非阻塞I/O模型中,可以发起多个I/O操作,因此需要一个唯一标识每个I/O操作的上下文; 这个上下文称为(AIO I/O Control Block) ,用aiocb类型作为参数; AIO函数的调用程序需要为aiocb参数分配空间,并且保证AIO操作期间aiocb参数都可用; struct aiocb 一个aiocb结构描述一个AIO操作。多个异步IO操作使用同一个aiocb结构是错误的; 结构体定义在aio.h中。 struct aiocb struct aiocb aio_fildes 异步IO对应的文件描述符 aio_offset 文件指针的偏移量 aio_buf 和IO相关的缓存的首地址 struct aiocb aio_nbytes 文件传输(读/写)的字节数 struct sigevent sigevent结构体指示AIO在I/O操作完成后应执行何种操作。 union sigval aio_read int aio_read(struct aiocb *pAiocb) 启动一个异步读操作;请求进行排队后立即返回。 【参数】 pAiocb:指向相关的AIO控制块的指针; 【返回值】 成功返回OK; 失败返回ERROR。 aio_write int aio_write(struct aiocb *pAiocb) 启动一个异步写操作; 【参数】 pAiocb:指向相关的AIO控制块的指针; 【返回值】 成功返回OK; 失败返回ERROR。 aio_error int aio_error(struct aiocb *pAiocb) 获取异步I/O的错误状态信息; 【参数】 pAiocb:指向相关的AIO控制块的指针; 【返回值】 成功返回OK; 失败返回ERROR。 例子 aioReadDemo() * * * * * * * * * * * * * fseek 【说明】(续) 黑洞文件例子; 如果当前文件大小为10; 调用fseek(stream, 1024*1024-1, SEEK_SET); 之后调用fwrite(“1”, 1, 1, stream); 该文件大小显示为1M字节; 但内容只有11字节。 feof int feof( FILE *stream )
文档评论(0)