libaio readdemo

#include <stdio.h>
#include <stdlib.h>
#include <libaio.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <libaio.h>

#define AIO_MAXIO 64
#define AIO_BLKSIZE 1024

int srcfd = -1;

static void rd_done(io_context_t ctx, struct iocb *iocb, long res, long res2){
    int iosize = iocb->u.c.nbytes;
    char *buf = (char *)iocb->u.c.buf;
    off_t offset = iocb->u.c.offset;
    if (res2 != 0) {
        printf("aio read failed \n");
        exit(1);
    }
    if (res != iosize) {
        printf("read missing bytes expect %d got %d \n", iocb->u.c.nbytes, res);
        exit(1);
    }

    printf("the str is %s \n", buf);
    free(buf);
}

void main(int args, void *arg[]){
    io_context_t myctx;
    int rc;
    char *buff = NULL;
    int offset = 0;
    int num, i, tmp;

    if (args < 2) {
        printf("the number of param is wrong \n");
        exit(1);
    }

    if((srcfd = open(arg[1], O_RDWR)) < 0 ) {
        printf("open srcfile error \n");

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章