我正在尝试向文件写一个简单的东西,似乎AIO不起作用。可能是什么问题?我知道有额外的标题是不必要的。
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<string.h>
#include<errno.h>
#include<stdlib.h>
#include<aio.h>
const int SIZE_TO_WRITE = 100;
char buffer[100];
struct aiocb cb;
int main()
{
int file = open("samp", O_CREAT|O_RDWR|O_TRUNC,0664);
strcpy(buffer,"Sample");
cb.aio_nbytes = SIZE_TO_WRITE;
cb.aio_fildes = file;
cb.aio_buf = buffer;
if(aio_write(&cb) == -1){
printf("ERROR");
}
while(aio_error(&cb) == EINPROGRESS)
close(file);
return 0;
}
答案 0 :(得分:1)
while(aio_error(&cb) == EINPROGRESS)
close(file);
实际上是
while(aio_error(&cb) == EINPROGRESS)
close(file);
你的意思是忙等到写完了吗?
while(aio_error(&cb) == EINPROGRESS);
// ^
close(file);