2014-11-07 5 views
0

해당 파일이없는 경우 "common.txt"라는 파일을 만든 다음 단일 char을 추가하고 싶습니다.UNIX C - 간단한 write() 작업이 계속 실패합니다.

이 내 관련 코드입니다 :

char buffer3[2]; 
buffer3[0]='Z'; 
buffer3[1]='\0'; 

//open 
filed=open("common.txt", O_CREAT | O_APPEND, O_WRONLY); 

//append 
int result=write(filed, buffer3, 2); 

if(result==-1){ 
    cout << "WRITE FAILED!" << endl; 
}else{ 
    cout << "WRITE SUCCEEDED!" << endl; 
} 

//close 
close(filed); 

쓰기() -1을 반환 유지. write()의 3 번째 인수에 대해 1, 2, 3의 값을 시도했지만 그 중 하나도 작동하지 않았습니다. 어쩌면 내 open() 플래그가 올바르지 않을 수 있습니다.

+4

'열기'가 성공 했습니까? –

+0

btw보다 간단하게 버퍼를 정의 할 수 있습니다 :'char * buffer3 = "Z";'. 그런 다음 수동으로 null을 종결하지 않아도됩니다. 또한'write'에서 세 번째 매개 변수는'strlen (buffer3)'일 수 있습니다. – meskobalazs

+0

열기가 성공하여 3의 결과 값을 반환했습니다. –

답변

4

open()을 잘못 사용 중입니다. 그것은이 같은 더해야한다 : 당신은 파일을 만들 때 필수 인 mode 인수 누락 된

open("common.txt", O_CREAT | O_APPEND | O_WRONLY, 0666); 

(이 정의되지 않은 동작입니다 생략!). 그렇지 않으면 O_WRONLY을 모드로 전달했는데 이는 올바르지 않으며 flags에 필수 읽기/쓰기 플래그를 전달하지 못했습니다.

그리고 물론 open()이 실제로 성공했는지 확인해야합니다.

+0

완벽하게 작동합니다. 하하. 감사 <3 –

관련 문제