write 함수 사용시 데이터가 깨져서 나오는 문제
글쓴이: fedious / 작성시간: 월, 2011/08/15 - 12:38오전
일단 32비트 우분투에서 QT Creator를 사용해서 코딩을 하고 있습니다.
write 함수를 써서 파일에 데이터를 기록하는데 열어보면 데이터가 깨져서 나오네요-_-
리턴값도 정상이고, 디버깅에서 저장된 값을 확인해봐도 정상이거든요;;
대략 다음과 같이 열고, 쓰고, 닫습니다.
if ((writeCommonInfo = open (COMMONINFOTXTROOT, O_WRONLY | O_CREAT | O_TRUNC), 0644) < 0)
fprintf (stderr, "File write ERROR!!\n");
write (writeCommonInfo, &commonInfo, sizeof (commonInfo));
fprintf (stderr, "ERRNO[퍼센트d] \n", errno);
close (writeCommonInfo);
근데 errno를 찍으면 11이 나옵니다. 'fd 가 쓰기에 적당하지 않은 객체와 연결되어 있을경우'라고 하는데...문제가 있는 건가요??
commonInfo는 구조체입니다. 캐릭터형 변수로 구성되어 있구요.
첨부파일은 commonInfo 에 들어가 있는 값을 캡쳐한 것입니다.
그리고 혹시 write말고 다른 함수는 없나요?? 영문과 숫자만 쓸거고, 써야할 데이터양은 보통 500메가 많으면 1기가 정도 될 것 같습니다.
감사합니다:)
File attachments:
첨부 | 파일 크기 |
---|---|
asd.png | 186.81 KB |
Forums:
...
errno는 *실제로 에러가 있었을 경우*에만 값이 세팅이 됩니다. 그렇지 않을 경우 이전에 남아있던 값이 그냥 유지됩니다.
위의 코드에서 write의 리턴값을 확인해서 -1일 경우에만 errno가 의미가 있습니다.
* 좀 더 확실히 하시려면 close할 때에도 리턴값 확인해 주시는 것도...
close리턴값도 성공이네요...
음 확인해보니까 리턴값도 0으로 정상이네요ㅠ
음 파일을 열려고 하니까
또 다른 파일을 지에디트로 열려고 하니까
/home/xxxx/바탕화면/xxxx/yyyy/etc 파일을 열 수 없습니다.
예기치 않은 오류: 입력에서 잘못된 멀티 바이트 시퀀스가 불완전합니다
라고 메세지가 나오는데 뭐가 문제일까요??ㅠㅠ
참고로 윈도우에 가져가서 메모장으로 읽으면 잘 읽힙니다-_-
아 물론 마지막에 줄바꿈문자를 넣는데 줄바꿈이 되지는 않네요;; 대신 줄바꿈문자가 있는 곳은 방향키를 두번 눌러야 다음 칸으로 커서가 이동하네요
혹시
unicode 문제 ?
댓글 달기