关于linux里面的异步io的问题,请各位给点提示,谢谢

leolyq leolyq 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
正在自学linux下编程,看到aio部分就想编个程序实验一下,但是却遇到了问题如下:

包含了 头文件 aio.h
但是编译的时候会有如下错误提示:
myaio.o: In function `main':/home/aki/kdevelop/myaio/src/myaio.c:24: undefined reference to `aio_read'
myaio.o: In function `on_input':/home/aki/kdevelop/myaio/src/myaio.c:34: undefined reference to `aio_error'
:/home/aki/kdevelop/myaio/src/myaio.c:36: undefined reference to `aio_return'
:/home/aki/kdevelop/myaio/src/myaio.c:42: undefined reference to `aio_read'

小弟是新来的,刚刚接触linux编程,还不是很熟悉,请高手一定要指导一下哦!!
附上我的源码:

#include <aio.h>
#include <stdio.h>
#include <signal.h>

struct aiocb kbcbuf;
int done;

void on_input(int);
void setup_aio_buffer();

main()
{

done=0;
signal(SIGIO, on_input);
setup_aio_buffer();
aio_read(&kbcbuf);
while(done!=1)
pause();
}

void on_input(int signum)
{
int c;
char* cp=(char*)kbcbuf.aio_buf;

if(aio_error(&kbcbuf)!=0)
perror("Reading failed");
else if(aio_return(&kbcbuf)==1)
c=*cp;
if(c=='q'||c==EOF)
done=1;
else printf("%c", c);

aio_read(&kbcbuf);
}

void setup_aio_buffer()
{
static char input[1];
kbcbuf.aio_fildes=0;
kbcbuf.aio_buf=input;
kbcbuf.aio_nbytes=1;
kbcbuf.aio_offset=0;
kbcbuf.aio_sigevent.sigev_notify=SIGEV_SIGNAL;
kbcbuf.aio_sigevent.sigev_signo=SIGIO;
}

...全文

相关推荐

网络IO模型:同步IO和异步IO,阻塞IO和非阻塞IO.pdf

同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不相同。所以,为了更好的回答这个问题,我先限定一下本文的上下文。

limeOracle

Python实现数列的单调有界定理

数列是数学中一个重要的概念,在实际问题中也经常会遇到。其中,单调有界定理是指任何一个无穷递增数列必定有上界,任何一个无穷递减数列必定有下界。下面,我们将使用Python来实现这个定理。以上是使用Python实现数列的单调有界定理的全部代码。通过这个程序,我们可以方便地判断任意一个数列是否为单调有界数列,并找到其上界或下界。接着,我们需要判断该数列是否无穷递增或无穷递减,并找到其上界或下界。首先,我们需要输入一个数列,可以手动输入或者随机生成。Python实现数列的单调有界定理。

缤纷彩色

linux异步IO aio

linux异步IO aio paper programming

kkndmammoth

linux异步IO.pdf

linux异步IO

tycoon1988

Linux异步IO接口libaio[代码]

本文介绍了Linux下的原生异步IO接口libaio的使用方式,包括其系统调用和上下文管理。文章首先说明了libaio与POSIX AIO的区别,指出libaio是Linux原生的异步IO实现,行为更为低级。随后详细介绍了libaio的五个系统调用:io_setup、io_destroy、io_submit、io_cancel和io_getevents,并通过代码示例展示了如何创建和销毁AIO上下文,以及如何提交和查询IO请求。文章还解释了struct iocb结构体的初始化过程,以及io_submit和io_getevents的返回值含义。最后,文章提供了相关参考资料,帮助读者进一步了解libaio的使用。

u0v1w2x3
评论 8
收藏 已收藏
分享
返回顶部
leolyq
Linux/Unix社区 23,224 成员 74,535 内容