下面是一个示例代码,展示了如何使用aio_write()
函数进行异步写入操作:
#include
#include
#include
#include
#include
#include
#define BUFFER_SIZE 1024
int main() {
int fd;
struct aiocb aio;
char buffer[BUFFER_SIZE] = "Hello, World!\n";
// 打开文件
fd = open("file.txt", O_WRONLY | O_CREAT | O_TRUNC, 0644);
if (fd == -1) {
perror("open");
exit(1);
}
// 设置异步写入操作
memset(&aio, 0, sizeof(struct aiocb));
aio.aio_fildes = fd;
aio.aio_buf = buffer;
aio.aio_nbytes = BUFFER_SIZE;
// 发起异步写入请求
if (aio_write(&aio) == -1) {
perror("aio_write");
exit(1);
}
// 等待异步写入完成
while (aio_error(&aio) == EINPROGRESS) {
printf("Writing...\n");
}
// 检查异步写入的结果
ssize_t bytes_written = aio_return(&aio);
if (bytes_written == -1) {
perror("aio_return");
exit(1);
}
printf("Bytes written: %zd\n", bytes_written);
// 关闭文件
close(fd);
return 0;
}
这个示例代码创建了一个文件file.txt
,并使用aio_write()
函数进行异步写入操作。在发起异步写入请求后,代码使用aio_error()
函数检查异步写入是否完成,如果未完成,则打印"Writing..."。当异步写入完成后,使用aio_return()
函数获取写入的字节数,并打印结果。最后,关闭文件。
请确保在编译和运行代码之前已经安装了libaio
库。在Linux系统中,可以使用以下命令进行编译:
gcc -o program program.c -lrt
然后,运行可执行文件:
./program