2013-12-22 32 views
0

我正在嘗試向文件寫入一個簡單的東西,看起來AIO不起作用。可能是什麼問題?我知道有額外的頭是不必要的。當我嘗試寫一個簡單的文本時,aio_write()不工作

#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; 
} 

回答

1
while(aio_error(&cb) == EINPROGRESS)  
close(file); 

實際上是

while(aio_error(&cb) == EINPROGRESS)  
    close(file); 

您的意思是忙等待,直到寫,而不是完成?

while(aio_error(&cb) == EINPROGRESS); 
//        ^
close(file); 
+0

是的我的意思是忙着等待,謝謝我改變了我的代碼。但我無法讀取它說「gedit無法檢測到字符編碼」的文件。我正在使用debian。 – CrimsonKing

+1

@IsmailHatip:在「Sample」測試之後,您正在該文件中編寫94個字符的垃圾(好的,這裏是零)。如果要將其作爲普通文本文件讀取,請用文本填充緩衝區或寫出較少的文本。 – Mat

+0

那麼這是工作感謝您的評論。 – CrimsonKing

相關問題