关于linux里面的异步io的问题,请各位给点提示,谢谢
正在自学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;
}