간단한 열기 및 쓰기를 수행하는 이상한 결과가 있습니다. 내가 프로그램을 인용거야 다음 난 내 결과를 설명 할 것이다 :이 코드를 사용하여쓰기가 파일에 이상한 resuts를 생성합니다.
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
int main(){
int fd = open("hello.txt", O_WRONLY|O_CREAT, 0700);
char buf[] = "Hello world\n";
int i=0;
for(i = 0; i < 10;i++){
write(1,buf,sizeof(buf));
write(fd, buf, sizeof(buf));
}
close(fd);
return 0;
}
을, 터미널의 출력은 예상대로 세계 안녕하세요 십 배 ...하지만 것 파일 hello.txt의 I에 얻으십시오 :
效汬潷汲䠀汥潬眠牯摬
效汬潷汲䠀汥潬眠牯摬
效汬潷汲䠀汥潬眠牯摬
效汬潷汲䠀汥潬眠牯摬
效汬潷汲䠀汥潬眠牯摬
1) 왜 이런 일이 발생합니까? 나는 무엇을 잘못 했는가? 그리고 왜 중국인입니까? 사전에 감사
편집 : -Wall 플래그와 함께 GCC 4.8.1를 사용하여 컴파일 : 더 경고하지
컴파일하고 실행할 때이 오류가 발생하지 않습니다. – squiguy
나를 위해 잘 작동합니다. 터미널 설정을 확인하고 싶을 수 있습니다. – Asblarf
'open '을 호출 한 후 fd! = -1을 확인 했습니까? –