2013-12-22 1 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 : "샘플"테스트 후 해당 파일에 94 개의 쓰레기 (여기서는 0)를 쓰고 있습니다. 버퍼를 텍스트로 채우거나 일반 텍스트 파일로 읽으려면 적은 양을 씁니다. – Mat

+0

의견을 보내 주셔서 감사합니다. – CrimsonKing