fopen (path, "w")가 성공하면 파일이 잘립니다. fopen이 실패하면 파일이 수정되지 않았다는 보장이 있습니까?실패한 fopen이 파일 시스템에 영향을 줄 수 있습니까?
5
A
답변
6
아니요 fopen(path, "w")
이 실패 할 경우 파일 상태에 대한 보장이 없습니다. 실패는 파일을 여는 것, 잘라내기를 디스크에 커밋하는 것 등 모든 작업에서 발생할 수 있습니다. 실패가 제공하는 유일한 보장은 파일에 대한 액세스 권한이 없다는 것입니다.
0
fopen()이 실패하는 유일한 이유는 파일에 접근 할 수 없거나 수정할 수없는 경우입니다. 그래도 파일이 수정되는 것에 대해 걱정이된다면 O_WRITE 플래그와 함께 open() 명령을 사용할 수 있습니다. 그런 다음 fdopen()을 사용하여이를 FILE * 포인터로 변환 할 수 있습니다.
0
훌륭한 질문입니다. 대답은 '아니오'라고 생각합니다. fopen
은 FILE
구조체를 할당해야하며, 구현시 자연스러운 순서는 파일을 먼저 열고 나서 FILE
을 할당하는 것입니다. 이 방법으로 fopen
은 fdopen
(또는 네임 스페이스 규격에 대한 일부 맨 앞의 밑줄 또는 띄어쓰기가있는 유사한 함수)의 래퍼입니다.
개인적으로 아무런 오류가 발생해도 파일 상태를 신경 쓰지 않으면 개인적으로는 stdio
기능을 사용하지 않습니다. 파일을 열어도 stdio의 버퍼링으로 인해 을 알기가 거의 불가능합니다. 쓰기 기능이 오류를 반환하고 파일을 사용 가능한 일관성있는 상태로 되돌릴 수없는 경우 오류가 발생하면 오류가 발생합니다.
관련 문제
- 1. 어떻게 파일 시스템에 디렉토리를 만들 수 있습니까?
- 2. 파일 시스템에
- 3. 런타임시 현지인에게 영향을 줄 수있는 방법이 있습니까?
- 4. FAT 파일 시스템에 서명이 있습니까?
- 5. 폴더에 파일이 많으면 퍼포먼스에 영향을 줄 수 있습니까?
- 6. css가 document.write에 의해 추가 된 요소에 영향을 줄 수 있습니까?
- 7. GPU 기능이 가상 컴퓨터 성능에 영향을 줄 수 있습니까?
- 8. ASP.NET을 통한 다운로드는 IIS 성능에 영향을 줄 수 있습니까?
- 9. 수치를 기준으로 Lucene 순위에 영향을 줄 수 있습니까?
- 10. 키보드 포커스 HTML에 어떤 영향을 줄 수 있습니까?
- 11. 파일 시스템에 파일 저장
- 12. 파일 시스템에 파일 시스템 만들기
- 13. 설치시 안드로이드 파일 시스템에 파일을 저장할 수 있습니까?
- 14. ZuneHD에서 XNA 3.1을 사용하고 데이터를 파일 시스템에 저장할 수 있습니까?
- 15. i 파일을 iPhone 장치에서 컴퓨터 파일 시스템에 쓸 수 있습니까?
- 16. 파일 시스템에 특정 파일이 있는지 확인할 수 있습니까?
- 17. 폴더가 ext3 파일 시스템에 얼마나 많은 파일을 저장할 수 있습니까?
- 18. $ _POST + fopen이 작동하지 않습니다!
- 19. 현재 하나의 파일 편집 시스템에
- 20. fopen이 처음 실패하는 이유는 무엇입니까?
- 21. 열기 실패, fopen이 없음
- 22. 실패한 고래를 언제 보여줄 수 있습니까?
- 23. iPhone SDK를 사용하면 여러보기에 영향을 줄 수 있습니다.
- 24. htaccess가 실패한 파일 확장자 제거하기
- 25. test.php 레오파드 파일 시스템에 출력 할 수 없습니다 파일
- 26. 다음 줄 문자는 xmlparser에 막대한 영향을 줍니까?
- 27. initWithCoder를 사용하여 UITextView 내용에 영향을 줄 수 없습니다.
- 28. 인지 적 편향이 소프트웨어 개발에 영향을 줄 때의 예가 있습니까?
- 29. PHP fopen이 응답하지 않습니다.
- 30. 기본 클래스에 정적 필드를 만들 수 있지만 하위 클래스에서 만드는 것과 같은 영향을 줄 수 있습니까?
여기서 fopen이 실패 할 수있는 하드웨어 오류는 무시합니다. – JaredPar
'man fopen' : "fopen(), fdopen() 및 freopen() 함수도 실패하고 루틴에 지정된 오류 malloc (3) ". 그래서, 당신이 도입 한 것보다 실패 할 이유가 더 있습니다. – xappymah
확인. 나는 그것을 몰랐다. 그러나 내 솔루션은 여전히 파일이 수정되지 않았 음을 보증합니다. – Maz